Comment fonctionne le formatage de la date Jekyll?

92

J'utilise Jekyll pour générer un site simple.

Je veux que le champ de date s'affiche dans le format 12 September 2011.

J'ai trouvé, grâce à un googling créatif, un peu de manipulation du format de date, mais rien qui semble me donner le nom du mois. Ce que j'ai {{ page.date| date: "%m-%d-%Y" }}, c'est ce qui me donne une sortie 09-12-2011, mais ce n'est pas tout à fait ce que je recherche.

Existe-t-il un moyen d'obtenir le mois sous forme de nom dans Jekyll?

Ou, sauf cela, y a-t-il une documentation pour l'attribut de date?

Michael
la source
Les filtres intéressants sont date_to_stringet date_to_xmlschema(Voir jekyllrb.com/docs/templates )
Martin Thoma
Le document de mise en forme de date le plus complet jekyll / liquide que j'ai pu trouver: alanwsmith.com/jekyll-liquid-date-formatting-examples
joce

Réponses:

162

Solution

Ce filtre de sortie:

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

produit des dates au format:

9 September 2013

Assurez-vous de ne pas manquer le signe moins ( -) devant %-dpour la journée. Sans cela, les nombres inférieurs à dix auraient des zéros non significatifs (par exemple 09 September 2013).

Vous trouverez des détails sur les jetons de mise en forme de date individuels sur la page de documentation Liquid "Balises et filtres de sortie" .

Plus d'informations

J'ai rassemblé un grand nombre d'exemples de formatage de date Jekyll . Il fournit des exemples pour plusieurs formats et devrait fournir suffisamment de détails pour formater comme vous le souhaitez. Quelques exemples incluent:

  • 23/09/2013
  • 23 septembre 2013
  • 23 septembre 2013
  • 4 juillet 2013 (c'est-à-dire changer les noms en d'autres langues comme "Juli" au lieu de "July").

Prendre plaisir!

Alan W. Smith
la source
Est-il possible de le mettre en forme au format NNXX, c'est-à-dire 1er 2ème 3ème etc?
Ian
@Ian - Je ne vois pas de moyen de faire le "1er", "2ème", etc ... avec les formateurs de date Liquid. Cela peut être possible avec un peu de logique supplémentaire. Postez une autre question pour cela spécifiquement et voyez si quelqu'un sait comment.
Alan
@Ian - J'ai posté une autre réponse ici qui répond à la 1ère, 2ème, 3ème question. Je mets également à jour ma réponse pour pointer vers un ensemble de référence d'extraits de mise en forme de date.
Alan
N'utilisez pas plus: '0'. Utilisation: {{ page.date | date: "%-m-%d-%Y" }}. Notez le trait d' union entre %et m: %-m.
Nowaker
1
@DamianNowak - Merci pour le pointeur à utiliser %-m. C'est beaucoup plus propre. J'ai mis à jour la réponse pour refléter cela et je mettrai à jour mon article de référence dès que possible.
Alan
14

Jekyll ajoute des extensions de filtre au liquide. Regardez ici . Vous pouvez afficher le format de date souhaité en exécutant simplement le date_to_long_stringfiltre.

Depuis le lien:


Date en chaîne longue

Formatez une date au format long, par exemple «27 janvier 2011».

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

Mike Vormwald
la source
4

Jekyll 3.8 prend en charge les dates ordinales hors de la boîte. Pour sortir le mois, utilisez l'un de ceux-ci.

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

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

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

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

Colin
la source
3

Essayez «% B» qui signifie «Le nom complet du mois (« janvier »)»

recherchez dans la documentation strftime, la fonction qui est généralement utilisée pour convertir une date en chaîne.

theomega
la source
2

Juste au cas où vous voudriez une solution personnalisée, vous pouvez écrire un plugin Jekyll pour formater une date comme vous le souhaitez, comme ceci (cet exemple est pour les dates italiennes):

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)

Enregistrez simplement ceci dans un fichier comme _plugins/italian_dates.rbet utilisez-le selon vos besoins dans les modèles:

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

Utilisez {{ page.date| date: "%d %B %Y" }}pour des dates comme le 12 septembre 2011 , reportez-vous au guide de formatage agréable et rapide sur le formatage de date Jekyll

SACn
la source