it-swarm.it

Come funziona la formattazione della data Jekyll?

Sto usando Jekyll per generare un sito semplice.

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

Ho trovato, tramite alcuni googling creativi, un po 'di manipolazione del formato della data, ma nulla che sembra farmi 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?

O, a parte questo, c'è qualche documentazione per l'attributo date?

89
Michael

Soluzione

Questo filtro di output:

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

produce date formattate come:

9 September 2013

Assicurati di non perdere il meno (-) di fronte a %-d per il giorno. Senza di essa, 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" liquidi .

Ulteriori informazioni

Ho messo insieme un grande set di esempi di formattazione della data Jekyll . Fornisce esempi per diversi formati e dovrebbe fornire dettagli sufficienti per formattare nel modo desiderato. Alcuni esempi includono:

  • 2013/09/23
  • 23 settembre 2013
  • 23 settembre 2013
  • 4 luglio 2013 (ovvero modifica dei nomi in altre lingue come "Juli" anziché "Luglio").

Godere!

152
Alan W. Smith

Jekyll aggiunge le estensioni del filtro al liquido. Vedi qui . Puoi visualizzare il formato data desiderato semplicemente eseguendo il date_to_long_string filtro.

Dal link:


Data a stringa lunga

Formatta una data in formato lungo, ad es. “27 gennaio 2011”.

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

13
Mike Vormwald

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

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

3
theomega

Jekyll 3.8 supporta immediatamente le date ordinali. Per produrre il mese usa uno di questi.

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

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

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

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

3
Colin

Nel caso in cui si desideri una soluzione personalizzata, è possibile scrivere un plug-in Jekyll per formattare una data come desiderato, 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.rb e utilizzalo come necessario nei modelli:

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

Uso {{ page.date| date: "%d %B %Y" }} per date come 12 settembre 2011 , consultare la guida di formattazione rapida e piacevole su Jekyll Date Formatting

2
SACn