Wie funktioniert die Jekyll-Datumsformatierung?


92

Ich verwende Jekyll, um eine einfache Site zu generieren.

Ich möchte, dass das Datumsfeld im Format angezeigt wird 12 September 2011.

Ich habe durch kreatives Googeln ein bisschen Manipulation im Datumsformat gefunden, aber nichts, was mir den Monatsnamen zu bringen scheint. Was ich habe, ist {{ page.date| date: "%m-%d-%Y" }}, was mir Ausgabe bringt 09-12-2011, aber nicht ganz das ist, wonach ich suche.

Gibt es eine Möglichkeit, den Monat in Jekyll als Namen zu finden?

Oder gibt es, abgesehen davon, eine Dokumentation für das Datumsattribut?


Interessante Filter sind date_to_stringund date_to_xmlschema(siehe jekyllrb.com/docs/templates )
Martin Thoma

Das vollständigste Datums-Jekyll / Liquid Date-Formatierungsdokument, das ich finden konnte: alanwsmith.com/jekyll-liquid-date-formatting-examples
joce

Antworten:


160

Lösung

Dieser Ausgabefilter:

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

Erzeugt Daten, die wie folgt formatiert sind:

9 September 2013

Verpassen Sie nicht das Minuszeichen ( -) vor %-ddem Tag. Ohne sie hätten Zahlen unter zehn führende Nullen (z 09 September 2013. B. ).

Details zu den einzelnen Datumsformatierungs-Token finden Sie auf der Liquid-Dokumentationsseite "Ausgabe-Tags und -Filter" .

Mehr Info

Ich habe eine große Anzahl von Beispielen für die Jekyll-Datumsformatierung zusammengestellt . Es enthält Beispiele für verschiedene Formate und sollte genügend Details enthalten, um das gewünschte Format zu erhalten. Einige Beispiele sind:

  • 2013-09-23
  • 23. September 2013
  • 23. September 2013
  • 4. Juli 2013 (dh Ändern der Namen in andere Sprachen wie "Juli" anstelle von "Juli").

Genießen!


Ist es möglich, es im NNXX-Format zu formatieren, dh 1. 2. 3. usw.?
Ian

@ Ian - Ich sehe keine Möglichkeit, die "1.", "2." usw. mit den Liquid-Datumsformatierern zu erstellen. Möglicherweise ist dies mit einer zusätzlichen Logik möglich. Stellen Sie dazu eine andere Frage und prüfen Sie, ob jemand weiß, wie.
Alan W. Smith

@ Ian - Ich habe hier eine weitere Antwort gepostet , die sich mit der 1., 2. und 3. Frage befasst. Ich aktualisiere auch meine Antwort, um auf einen Referenzsatz von Datumsformatierungsausschnitten zu verweisen.
Alan W. Smith

Nicht benutzen plus: '0'. Verwenden Sie : {{ page.date | date: "%-m-%d-%Y" }}. Beachten Sie den Bindestrich zwischen %und m : %-m.
Nowaker

1
@DamianNowak - Danke für den zu verwendenden Zeiger %-m. Es ist viel sauberer. Ich habe die Antwort aktualisiert, um dies widerzuspiegeln, und werde meinen Referenzbeitrag so bald wie möglich aktualisieren.
Alan W. Smith

14

Jekyll fügt der Flüssigkeit Filtererweiterungen hinzu. Siehe hier . Sie können das gewünschte Datumsformat anzeigen, indem Sie einfach den date_to_long_stringFilter ausführen.

Über den Link:


Datum zu langer Zeichenfolge

Formatieren Sie ein Datum im Langformat, z. B. „27. Januar 2011“.

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


4

Jekyll 3.8 unterstützt sofort verfügbare Ordnungsdaten. Verwenden Sie eine dieser Optionen, um den Monat auszugeben.

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

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

{{ page.date | date_to_long_string: "ordinal" }}wird ausgegeben 24th April 2018.

{{ page.date | date_to_string: "ordinal" }}wird ausgegeben 24th Apr 2018.


3

Versuchen Sie '% B', was "Der vollständige Monatsname (" Januar ")" bedeutet.

Durchsuchen Sie die Dokumentation nach strftime, der Funktion, die normalerweise zum Konvertieren eines Datums in einen String verwendet wird.


2

Nur für den Fall, dass Sie eine benutzerdefinierte Lösung wünschen, können Sie ein Jekyll-Plugin schreiben, um ein Datum wie folgt zu formatieren (dieses Beispiel gilt für italienische Daten):

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)

Speichern Sie dies einfach in einer Datei wie _plugins/italian_dates.rbund verwenden Sie sie nach Bedarf in Vorlagen:

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.