Jekyll 日期格式如何工作?
Posted
技术标签:
【中文标题】Jekyll 日期格式如何工作?【英文标题】:How does Jekyll date formatting work? 【发布时间】:2011-11-15 18:26:00 【问题描述】:我正在使用 Jekyll 生成一个简单的网站。
我希望日期字段以12 September 2011
的格式显示。
通过一些创造性的谷歌搜索,我发现了一些日期格式操作,但似乎没有什么能让我得到月份的名称。我所拥有的是 page.date| date: "%m-%d-%Y"
,它让我输出为09-12-2011
,但并不是我想要的。
有什么方法可以在 Jekyll 中将月份作为名称?
或者,除此之外,是否有任何关于日期属性的文档?
【问题讨论】:
有趣的过滤器是date_to_string
和date_to_xmlschema
(见jekyllrb.com/docs/templates)
我能找到的最完整的日期 jekyll/液体日期格式化文档:alanwsmith.com/jekyll-liquid-date-formatting-examples
【参考方案1】:
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
。
【讨论】:
【参考方案2】:解决方案
这个输出过滤器:
page.date | date: "%-d %B %Y"
产生格式如下的日期:
9 September 2013
一定不要错过当天%-d
前面的减号(-
)。没有它,十以下的数字将有前导零(例如09 September 2013
)。
可以在Liquid "Output tags and filters" documentation page 上找到有关各个日期格式标记的详细信息。
更多信息
我整理了一个large set of Jekyll date formatting examples。它提供了几种格式的示例,并且应该提供足够的细节来以您想要的任何方式进行格式化。一些例子包括:
2013-09-23 2013 年 9 月 23 日 9 月2013 年 2 月 23 日 2013 年 7 月 4 日(即将名称更改为其他语言,例如“Juli”而不是“July”)。享受吧!
【讨论】:
是否可以将其格式化为 NNXX 格式,即 1st 2nd 3rd 等? @Ian - 我看不到使用 Liquid 日期格式化程序执行“1st”、“2nd”等的方法。可能会加入一些额外的逻辑。为此专门发布另一个问题,看看是否有人知道。 @Ian - 我发布了another answer here,解决了第一个、第二个、第三个问题。我还在更新我的答案以指向一组日期格式 sn-ps 的参考。 不要使用plus: '0'
。使用: page.date | date: "%-m-%d-%Y"
。注意%
和 m 之间的连字符:%-m
。
@DamianNowak - 感谢您提供使用 %-m
的指针。干净多了。我已经更新了答案以反映这一点,并将尽快更新我的参考帖子。【参考方案3】:
使用 page.date| date: "%d %B %Y"
表示像2011 年9 月12 日 这样的日期,请参阅Jekyll Date Formatting 上的快速格式化指南
【讨论】:
【参考方案4】:以防万一您需要自定义解决方案,您可以编写一个 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>
【讨论】:
【参考方案5】:Jekyll 为液体添加了过滤器扩展。见here。您只需运行date_to_long_string
过滤器即可显示所需的日期格式。
来自链接:
日期转长字符串
以长格式格式化日期,例如“2011 年 1 月 27 日”。
site.time | date_to_long_string
=> 17 November 2008
【讨论】:
【参考方案6】:试试 '%B',意思是“完整的月份名称(``January'')”
在文档中搜索 strftime,该函数通常用于将日期转换为字符串。
【讨论】:
以上是关于Jekyll 日期格式如何工作?的主要内容,如果未能解决你的问题,请参考以下文章