Jekyll日期格式如何工作?


92

我正在使用Jekyll生成一个简单的网站。

我希望日期字段以格式显示12 September 2011

通过一些创造性的搜索,我发现了一些日期格式的操作,但是似乎没有什么让我知道月份的名称。我所拥有的是{{ page.date| date: "%m-%d-%Y" }},它使我的输出为09-12-2011,但与我要找的东西不完全相同。

有什么方法可以在Jekyll中获得月份的名称?

或者,除此以外,是否有任何有关date属性的文档?


有趣的过滤器date_to_stringdate_to_xmlschema(见jekyllrb.com/docs/templates
马丁托马

我可以找到最完整的日期jekyll / liquid日期格式文档:alanwsmith.com/jekyll-liquid-date-formatting-examples
joce

Answers:


161

此输出过滤器:

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

产生日期格式如下:

9 September 2013

确保不要错过当天-前面的减号()%-d。没有它,低于10的数字将带有前导零(例如09 September 2013)。

有关各个日期格式标记的详细信息,请参见“输出标签和过滤器”液体文档页面。

更多信息

我整理了一大堆Jekyll日期格式示例。它提供了几种格式的示例,并应提供足够的详细信息以您希望的任何方式进行格式化。一些示例包括:

  • 2013-09-23
  • 2013年9月23日
  • 2013年9月23日
  • 2013年7月4日(即,将名称更改为“ Juli”等其他语言,而不是“ July”)。

请享用!


是否可以将其格式化为NNXX格式,即1st,2nd,3rd等?
伊恩

@Ian-我看不到使用Liquid日期格式化程序进行“ 1st”,“ 2nd”等操作的方法。可能会抛出一些额外的逻辑。有针对性地发布另一个问题,看看是否有人知道如何做。
艾伦·史密斯

@Ian-我在这里发布了另一个答案,以解决第一个,第二个,第三个问题。我也在更新我的答案,以指向一组日期格式摘要的参考。
艾伦·史密斯

不要使用plus: '0'。使用:{{ page.date | date: "%-m-%d-%Y" }}。请注意和之间的连字符%::%-m
Nowaker

1
@DamianNowak-感谢您使用指针%-m。干净得多。我已经更新了答案以反映这一点,并将尽快更新我的参考帖子。
艾伦·史密斯

14

Jekyll将过滤器扩展添加到液体中。看这里。您只需运行date_to_long_string过滤器即可显示所需的日期格式。

从链接:


日期长字符串

用长格式格式化日期,例如“ 2011年1月27日”。

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


4

Jekyll 3.8开箱即用地支持顺序日期。要输出月份,请使用其中之一。

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

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

{{ page.date | date_to_long_string: "ordinal" }}将输出24th April 2018

{{ page.date | date_to_string: "ordinal" }}将输出24th Apr 2018


3

尝试使用“%B”,其意思是“完整的月份名称(“ 1月”)”

在文档中搜索strftime,该函数通常用于将日期转换为字符串。


2

万一您需要自定义解决方案,可以编写一个Jekyll插件来根据需要设置日期格式,如下所示(此示例适用于意大利日期):

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)

只需将其保存到类似的文件中_plugins/italian_dates.rb,然后在模板中根据需要使用即可:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.