日期比较逻辑/液体模板过滤器中

Bra*_*cer 4 date liquid-layout liquid shopify

我正在尝试创建一个“预购”类机制,其中Shopify液体模板的某些元素仅在当前日期大于或小于元字段中指定的日期时显示。

截至目前,这是我所包含的逻辑:

<!-- Check Today is correct -->
<p>Today: {{'now' | date: '%d-%m-%Y' }}</p>

<!-- This is the Metafield Output as a String -->
<p>Release Date: {{ product.metafields.Release-Date.preOrder }}</p>

<!-- Assign Variable "today_date" to the current date -->
{% assign today_date = 'now' | date: '%d-%m-%Y' %}
<!-- Assign Variable "pre_date" to the string of the metafield -->
{% assign pre_date = product.metafields.Release-Date.preOrder %}
{% if today_date > pre_date %}
  Today's date is greater than PreOrder Date
{% else %}
  Today's date is not greater than PreOrder Date
{% endif %}
Run Code Online (Sandbox Code Playgroud)

但是,即使我将预购日期设置为01-01-2018,它仍然显示“大于”。

如何正确查询?

dri*_*rip 12

您不能以这种方式比较字符串。(日期是字符串。)

您必须改用%s日期过滤器。

因此它将变为:

{% assign today_date = 'now' | date: '%s' %}
{% assign pre_date = product.metafields.Release-Date.preOrder | date: '%s' %}
{% if today_date > pre_date %}
Run Code Online (Sandbox Code Playgroud)

我们使用%s它是因为它将返回当前的unix时间戳号而不是字符串。这样,您将能够比较不同的时间戳。

  • 请注意,您可能需要将其转换为数字以进行某些日期比较,因此我建议使用 `date: '%s' | 次数: 1` 对于两个作业 (2认同)