【问题标题】:How can I change a string into a date in Liquid?如何在 Liquid 中将字符串更改为日期?
【发布时间】:2019-11-08 21:05:25
【问题描述】:

我有像 09011990 这样的字符串,我想在我的 Liquid 模板中显示为 September 1, 1990

我之前将{{widgets.Date.Digits | split:"" | join:" , "}} 用于另一个字段,在该字段中我可以将所有数字分开,但我无法找到一种方法可以将数字分开为月份的 2 位数字、当天的 2 位数字和 4 位的数字年份,然后在两者之间使用/,以便可以清楚地区分它作为日期。

【问题讨论】:

  • 我尝试了几种技术,但找不到将字符串转换为 Liquid 中的实际日期(或时间)对象的方法。我认为唯一的方法是使用字符串函数对您的字符串进行操作,唯一的答案如下所述。

标签: liquid


【解决方案1】:

如果您知道您的“日期数字”将始终处于相同的顺序,您可以使用slice 过滤器将数字的不同部分分配给变量。例如,假设我们将日期作为一个名为 date_digits 的变量传入:

{%- assign month = date_digits | slice: 0, 2 %}
{%- assign day   = date_digits | slice: 2, 2 %}
{%- assign year  = date_digits | slice: 4, 4 %}

然后我们可以使用capture 将所有三个值组合成一个可由date 过滤器解析的字符串。根据我的测试,date 过滤器确实更喜欢订单日、月、年:

{%- capture date_string %}{{ day }}/{{ month }}/{{ year }}{%- endcapture %}

最后,我们可以使用date 过滤器来显示我们可读的日期:

{{ date_string | date: "%B %d, %Y" }}

产生September 01, 1990

这是一个非常脆弱的解决方案,但仅使用 Liquid 是可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-05-15
    • 2023-04-05
    • 2019-06-18
    • 2018-12-08
    • 2013-08-16
    相关资源
    最近更新 更多