【问题标题】:Ordinalize date formatting in Liquid/Jekyll (e.g. "1st", "3rd" and "4th")在 Liquid/Jekyll 中对日期格式进行排序(例如“1st”、“3rd”和“4th”)
【发布时间】:2013-09-24 10:24:04
【问题描述】:

是否可以在 Liquid 或 Jekyll 中为日期格式添加月份后缀?例如:1 月 23 日或 5 月 18 日。

我提到了Shopify wiki,但我很震惊地看到那里没有适合它的格式。当然应该是这么简单的事情吗? :/

【问题讨论】:

    标签: jekyll liquid


    【解决方案1】:

    Jekyll 使用的 Liquid 模板引擎不提供开箱即用的排序功能(例如,将“1”转换为“1st”,将“3”转换为“3rd”)。但是,可以使用过滤器和标签来提供该功能。下面的 sn-p 生成月份编号,并附加了一个经过规范化的字符串。它还会删除该月前 9 天的前导零。

    {% assign d = page.date | date: "%-d" %}
    {% 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 %}
    

    对于包含月、日和年的完整日期,请使用:

    {% assign d = page.date | date: "%-d" %}
    {{ 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" }}
    

    产生如下输出:

    September 21st, 2013
    

    注意:代码被分成多行以便于阅读。它可以在 HTML 中很好地呈现,但在源代码中会有额外的空白。如果这让您感到困扰,只需将所有内容移到一行即可。

    如果您对其他日期格式选项感兴趣,我创建此参考:Jekyll (and GitHub Pages) Liquid Date Formatting Examples

    【讨论】:

    • 不要使用plus: '0'。使用:{{ page.date | date: "%-m-%d-%Y" }}。注意% 和 m 之间的连字符:%-m
    • @DamianNowak - 我更新了 sn-p 中使用的 %-d 调用。感谢您提供更优雅的去除前导零的方法。
    猜你喜欢
    • 2017-06-14
    • 2021-05-08
    • 2018-01-19
    • 2019-12-19
    • 2011-11-19
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    相关资源
    最近更新 更多