【问题标题】:How does Jekyll date formatting work?Jekyll 日期格式如何工作?
【发布时间】:2011-11-15 18:26:00
【问题描述】:

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

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

通过一些创造性的谷歌搜索,我发现了一些日期格式操作,但似乎没有什么能让我得到月份的名称。我所拥有的是{{ page.date| date: "%m-%d-%Y" }},它让我输出为09-12-2011,但并不是我想要的。

有什么方法可以在 Jekyll 中将月份作为名称?

或者,除此之外,是否有任何关于日期属性的文档?

【问题讨论】:

标签: liquid jekyll


【解决方案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,该函数通常用于将日期转换为字符串。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-10-07
            • 2019-04-10
            • 1970-01-01
            相关资源
            最近更新 更多