如何使用Jekyll在数字后显示正确附加th / st / nd的日期?

时间:2013-07-22 22:18:39

标签: jekyll liquid

我环顾四周,但在这上面找不到任何东西。我知道我可以格式化日期,例如“2013年1月12日”,但我如何添加“th”,所以它将是“2013年1月12日”?它还需要弄清楚它是否应该使用“nd”或“st”。

2 个答案:

答案 0 :(得分:1)

您不能单独使用Liquid,但您可以编写Liquid标签以所需格式显示日期。 :)

来自ActiveSupport的

You should take a look at the #ordinalize method来创建您自己的(或require库)。包裹它around a Liquid Tag,你应该好好去。

答案 1 :(得分:1)

我写了这个Liquid片段,无需插件即可生成“ordinalized”日期。

{% assign d = page.date | date: "%d" | plus:'0' %}
{{ page.date | date: "%B" }} 
{% case d %}
  {% when 1 or 21 or 31 %}{{ d }}st
  {% when 2 or 22 %}{{ d }}nd
  {% when 3 or 23 %}{{ d }}rd
  {% else %}{{ d }}th
  {% endcase %}, 
{{ page.date | date: "%Y" }}

代码不仅添加“st”,“nd”等字符串,还会删除每个月前九天的前导零。日期产生如下:

July 4th, 2013

如果您对其他日期格式选项感兴趣,我还会将此full set of Jekyll Liquid date formatting examples放在一起。它包含几个有用选项的片段,例如:“2013-09-23”,“2013年9月23日”和“2013年9月23日”。


注意:该代码被拆分为多行,以使其在此答案中可读。您可能希望将其移动到一行以避免生产中出现空白问题。我不知道我使用的任何版本的具体版本,但代码适用于运行OS X 10.8.5的Mac:Ruby 2.0.0p247 - Jekyll 1.2.1 - liquid 2.5.2。 < / p>