Come funziona la formattazione della data di Jekyll?


92

Sto usando Jekyll per generare un semplice sito.

Voglio che il campo della data venga visualizzato nel formato 12 September 2011.

Ho trovato, attraverso alcune ricerche creative su Google, un po 'di manipolazione del formato della data, ma niente che sembra farmi ottenere il nome del mese. Quello che ho è {{ page.date| date: "%m-%d-%Y" }}, che mi dà l' output come 09-12-2011, ma non è proprio quello che sto cercando.

C'è un modo per ottenere il mese come nome in Jekyll?

Oppure, a parte ciò, esiste una documentazione per l'attributo data?


I filtri interessanti sono date_to_stringe date_to_xmlschema(Vedi jekyllrb.com/docs/templates )
Martin Thoma

Il documento di formattazione della data jekyll / liquid data più completo che ho trovato: alanwsmith.com/jekyll-liquid-date-formatting-examples
joce

Risposte:


162

Soluzione

Questo filtro di output:

{{ page.date | date: "%-d %B %Y" }}

produce date formattate come:

9 September 2013

Assicurati di non perdere il segno meno ( -) davanti %-dper la giornata. Senza di esso, i numeri inferiori a dieci avrebbero zeri iniziali (ad esempio 09 September 2013).

I dettagli sui singoli token di formattazione della data sono disponibili nella pagina della documentazione "Tag e filtri di output" di Liquid .

Ulteriori informazioni

Ho messo insieme una vasta serie di esempi di formattazione della data Jekyll . Fornisce esempi per diversi formati e dovrebbe fornire dettagli sufficienti per formattare in qualsiasi modo desideri. Alcuni esempi includono:

  • 2013-09-23
  • 23 settembre 2013
  • 23 settembre 2013
  • 4 luglio 2013 (cioè cambiare i nomi in altre lingue come "Juli" invece di "July").

Godere!


È possibile formattarlo nel formato NNXX, cioè 1 ° 2 ° 3 ° ecc.?
Ian

@Ian - Non vedo un modo per fare il "1 °", "2 °", ecc ... con i formattatori di data Liquid. Potrebbe essere possibile con una logica in più inserita. Pubblica un'altra domanda per quello specifico e vedi se qualcuno sa come.
Alan W. Smith

@Ian - Ho pubblicato un'altra risposta qui che affronta la 1a, 2a, 3a domanda. Sto anche aggiornando la mia risposta in modo che punti a un set di riferimento di snippet di formattazione della data.
Alan W. Smith,

Non usare plus: '0'. Usa: {{ page.date | date: "%-m-%d-%Y" }}. Si noti il trattino tra %em: %-m.
Nowaker

1
@DamianNowak - Grazie per il puntatore da usare %-m. È molto più pulito. Ho aggiornato la risposta per riflettere questo e aggiornerò il mio post di riferimento non appena possibile.
Alan W. Smith,

14

Jekyll aggiunge estensioni di filtro a liquid. Vedi qui . È possibile visualizzare il formato della data desiderato semplicemente eseguendo il date_to_long_stringfiltro.

Dal link:


Data a stringa lunga

Formattare una data in formato lungo, ad esempio "27 gennaio 2011".

{{ site.time | date_to_long_string }} => 17 November 2008


4

Jekyll 3.8 supporta date ordinali fuori dagli schemi. Per produrre il mese usa uno di questi.

{{ page.date | date_to_long_string: "ordinal", "US" }}verrà prodotto April 24th, 2018.

{{ page.date | date_to_string: "ordinal", "US" }}verrà prodotto Apr 24th, 2018.

{{ page.date | date_to_long_string: "ordinal" }}verrà prodotto 24th April 2018.

{{ page.date | date_to_string: "ordinal" }}verrà prodotto 24th Apr 2018.


3

Prova '% B' che significa "Il nome completo del mese (` `gennaio '')"

cerca nella documentazione strftime, la funzione che viene tipicamente utilizzata per convertire una data in stringa.


2

Nel caso in cui desideri una soluzione personalizzata, potresti scrivere un plugin Jekyll per formattare una data come desideri, in questo modo (questo esempio è per le date italiane):

module Jekyll
    module ItalianDates
        MONTHS = {"01" => "gennaio", "02" => "febbraio", "03" => "marzo",
                "04" => "aprile", "05" => "maggio", "06" => "giugno",
                "07" => "luglio", "08" => "agosto", "09" => "settembre",
                "10" => "ottobre", "11" => "novembre", "12" => "dicembre"}

        # http://man7.org/linux/man-pages/man3/strftime.3.html
        def italianDate(date)
            day = time(date).strftime("%e") # leading zero is replaced by a space
            month = time(date).strftime("%m")
            year = time(date).strftime("%Y")
            day+' '+MONTHS[month]+' '+year
        end

        def html5date(date)
            day = time(date).strftime("%d")
            month = time(date).strftime("%m")
            year = time(date).strftime("%Y")
            year+'-'+month+'-'+day
        end
    end
end

Liquid::Template.register_filter(Jekyll::ItalianDates)

Basta salvarlo in un file come _plugins/italian_dates.rbe usarlo come necessario nei modelli:

<time datetime="{{page.date | html5date}}">{{page.date | italianDate}}</time>

2

Utilizzare {{ page.date| date: "%d %B %Y" }}per date come il 12 settembre 2011 , fare riferimento alla guida alla formattazione piacevole e veloce su Jekyll Date Formatting

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.