web-dev-qa-db-fra.com

Comment fonctionne le formatage de la date Jekyll?

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

Je souhaite que le champ de date s'affiche au format 12 September 2011.

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

Existe-t-il un moyen d'obtenir le mois comme nom à Jekyll?

Ou, sauf cela, existe-t-il une documentation pour l'attribut date?

89
Michael

Solution

Ce filtre de sortie:

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

produit des dates formatées comme:

9 September 2013

Assurez-vous de ne pas manquer le moins (-) en face de %-d pour la journée. Sans cela, les nombres inférieurs à dix auraient des zéros en tête (par exemple 09 September 2013).

Les détails sur les jetons de formatage de date individuels peuvent être trouvés sur la page de documentation Liquid "Output tags and filters" .

Plus d'informations

J'ai mis en place un grand ensemble 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:

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

Prendre plaisir!

152
Alan W. Smith

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

Depuis le lien:


Date à longue chaîne

Formater une date au format long, par ex. "27 janvier 2011".

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

13
Mike Vormwald

Essayez '% B' qui signifie "Le nom complet du mois (` `janvier '')"

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

3
theomega

Jekyll 3.8 prend en charge les dates ordinales hors de la boîte. Pour afficher le mois, utilisez l'un d'eux.

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

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

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

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

3
Colin

Juste au cas où vous voudriez une solution personnalisée, vous pourriez é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.rb et utilisez-le selon vos besoins dans les modèles:

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

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

2
SACn