¿Cómo funciona el formato de fecha de Jekyll?

92

Estoy usando Jekyll para generar un sitio simple.

Quiero que el campo de fecha se muestre en el formato 12 September 2011.

He encontrado, a través de una búsqueda creativa en Google, un poco de manipulación del formato de fecha, pero nada que parezca darme el nombre del mes. Lo que tengo es lo {{ page.date| date: "%m-%d-%Y" }}que me da resultados 09-12-2011, pero no es exactamente lo que estoy buscando.

¿Hay alguna forma de poner el mes como nombre en Jekyll?

O, salvo eso, ¿hay alguna documentación para el atributo de fecha?

Miguel
fuente
Los filtros interesantes son date_to_stringy date_to_xmlschema(Ver jekyllrb.com/docs/templates )
Martin Thoma
El documento de formato de fecha jekyll / liquid date más completo que pude encontrar: alanwsmith.com/jekyll-liquid-date-formatting-examples
joce

Respuestas:

162

Solución

Este filtro de salida:

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

produce fechas formateadas como:

9 September 2013

Asegúrese de no perderse el signo menos ( -) al frente del %-ddía. Sin él, los números por debajo de diez tendrían ceros a la izquierda (p 09 September 2013. Ej .).

Los detalles sobre los tokens de formato de fecha individuales se pueden encontrar en la página de documentación "Etiquetas de salida y filtros" de Liquid .

Más información

Reuní un gran conjunto de ejemplos de formato de fecha de Jekyll . Proporciona ejemplos para varios formatos y debería proporcionar suficientes detalles para formatear de la forma que desee. Algunos ejemplos incluyen:

  • 2013-09-23
  • 23 de septiembre de 2013
  • 23 de septiembre de 2013
  • 4 de julio de 2013 (es decir, cambiar los nombres a otros idiomas como "Juli" en lugar de "julio").

¡Disfrutar!

Alan W. Smith
fuente
¿Es posible que se formatee en el formato NNXX, es decir, primero, segundo, tercero, etc.?
Ian
@Ian - No veo una manera de hacer el "primero", el "segundo", etc ... con los formateadores de fecha Liquid. Puede ser posible con algo de lógica adicional. Publique otra pregunta para eso específicamente y vea si alguien sabe cómo.
Alan W. Smith
@Ian: publiqué otra respuesta aquí que aborda la primera, segunda y tercera pregunta. También estoy actualizando mi respuesta para señalar un conjunto de referencia de fragmentos de formato de fecha.
Alan W. Smith
No lo use plus: '0'. Uso: {{ page.date | date: "%-m-%d-%Y" }}. Note el guión entre %ym: %-m.
Nowaker
1
@DamianNowak - Gracias por usar el puntero %-m. Es mucho más limpio. Actualicé la respuesta para reflejar eso y actualizaré mi publicación de referencia tan pronto como pueda.
Alan W. Smith
14

Jekyll agrega extensiones de filtro al líquido. Vea aquí . Puede mostrar el formato de fecha deseado simplemente ejecutando el date_to_long_stringfiltro.

Desde el enlace:


Fecha a cadena larga

Dar formato a una fecha en formato largo, por ejemplo, "27 de enero de 2011".

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

Mike Vormwald
fuente
4

Jekyll 3.8 admite fechas ordinales listas para usar. Para imprimir el mes, utilice uno de estos.

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

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

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

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

Colin
fuente
3

Pruebe '% B', que significa "El nombre completo del mes (` `enero '')"

busque en la documentación strftime, la función que se utiliza normalmente para convertir una fecha en una cadena.

theomega
fuente
2

En caso de que desee una solución personalizada, puede escribir un complemento de Jekyll para formatear una fecha como desee, así (este ejemplo es para fechas italianas):

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)

Simplemente guarde esto en un archivo como _plugins/italian_dates.rby utilícelo como necesite en las plantillas:

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

Úselo {{ page.date| date: "%d %B %Y" }}para fechas como el 12 de septiembre de 2011 , consulte la guía de formato rápida y agradable sobre el formato de fecha de Jekyll

SACn
fuente