112 votes

Comment fonctionne le formatage des dates dans Jekyll ?

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

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

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

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

Ou, en dehors de cela, existe-t-il une documentation pour l'attribut date ?

0 votes

Les filtres intéressants sont date_to_string et date_to_xmlschema (Voir jekyllrb.com/docs/templates )

0 votes

Le document le plus complet que j'ai pu trouver sur le formatage des dates par Jekyll/liquide : alanwsmith.com/jekyll-liquid-date-formatting-examples

186voto

Alan W. Smith Points 6704

Solution

Ce filtre de sortie :

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

produit des dates formatées comme :

9 September 2013

Ne manquez pas les moins ( - ) devant %-d pour la journée. Sans elle, les nombres inférieurs à dix comporteraient des zéros non significatifs (par ex. 09 September 2013 ).

Les détails sur les jetons individuels de formatage de la date sont disponibles sur le site Web de l'UE. Page de documentation Liquid "Balises et filtres de sortie .

Plus d'informations

J'ai mis en place un un grand nombre d'exemples de formatage de date dans Jekyll . Il fournit des exemples pour plusieurs formats et devrait fournir suffisamment de détails pour que vous puissiez les formater comme vous le souhaitez. Voici quelques exemples :

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

Profitez-en !

0 votes

Est-il possible de le formater au format NNXX, c'est-à-dire 1er, 2e, 3e, etc.

0 votes

@Ian - Je ne vois pas comment faire le "1st", "2nd", etc... avec les formateurs de date Liquid. C'est peut-être possible avec une logique supplémentaire. Postez une autre question à ce sujet et voyez si quelqu'un sait comment faire.

0 votes

@Ian - J'ai posté une autre réponse ici qui répond aux 1ère, 2ème et 3ème questions. Je mets également à jour ma réponse pour pointer vers un ensemble de référence de snippets de formatage de date.

18voto

Mike V Points 1335

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

Du lien :


De la date à la chaîne longue

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

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

7voto

Colin Points 1009

Jekyll 3.8 supporte d'emblée les dates ordinales. Pour afficher le mois, utilisez l'une de ces options.

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

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

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

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

3voto

theomega Points 8874

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

Cherchez dans la documentation de strftime, la fonction qui est typiquement utilisée pour convertir une date en chaîne.

3voto

lifeisfoo Points 11

Au cas où vous souhaiteriez une solution personnalisée, vous pourriez écrire un plugin Jekyll pour formater une date comme vous le souhaitez, comme ceci (cet exemple concerne 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)

Il suffit de l'enregistrer dans un fichier comme _plugins/italian_dates.rb et l'utiliser selon vos besoins dans les modèles :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X