想知道是否有人可以帮助解决有关 Liquid / Shopify 的问题。我正在与一家每周四交付产品的商店合作,前提是您在同一周的周二中午 12 点前订购。
在给客户的通知中,我需要根据订单日期指明它将在哪个星期四发货,即“这个”或“下一个”。我已经通过以下逻辑在液体中实现了这一点:
{% if date | date: "%A" == 'Tuesday' and date | date: "%k" > 12 %}
Your order will be delivered on Thursday of next week.
{% elsif date | date: "%A" == 'Wednesday' or date | date: "%A" == 'Thursday' %}
Your order will be delivered on Thursday of next week.
{% else %}
Your order will be delivered this Thursday
{% endif %}
Run Code Online (Sandbox Code Playgroud)
以上暂时完成这项工作。但是,我的任务是实际发布星期四交货的“日期”。我绞尽脑汁,试图找出一种方法,我可以在液体中编写一个函数来告诉我“这个”星期四的日期是什么以及“下一个”星期四的日期是什么。但我来了王牌。我知道如何使用内置函数在 PHP 和 Ruby 中执行此操作,但我是 Liquid 的新手并且不认为它具有内置函数,因为它是一种标记语言(。所以我认为你必须做一些 unix 时间数学,但这使它变得非常复杂。
还有另一种方法,还是我必须求助于使用一些复杂的 unix 时间戳数学?
谢谢。
您将需要进行一些 unix 计算,但它们将是简单的计算。
请参阅下面的代码:
{% assign today = 'now' | date: '%s' %}
{% assign single_day = 86400 %}
{% assign today_number = 'now' | date: '%u' | plus: 0 %}
{% if today_number < 2 %}
Delivery by {{ today | plus: single_day | date: '%Y/%m/%d' }}
{% else %}
{% assign days_until_next = 9 | minus: today_number %}
{% assign days_unix = days_until_next | times: single_day %}
Delivery by {{ today | plus: days_unix | date: '%Y/%m/%d' }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
我会尝试分解它。
{% assign today = 'now' | date: '%s' %}
- 有了这个,我们将获得服务器日期的当前 unix 时间戳
{% assign single_day = 86400 %}
- 这是在 unix 时间戳中定义一天的数字
{% assign today_number = 'now' | date: '%u' | plus: 0 %}
- 这会以数字形式返回当前日期 (1...7)。的plus: 0
是将其转换为数字而不是一个字符串。
{% if today_number < 2 %}
- 我们正在检查是否today_number
小于 2(其中 2 是星期二),在这种情况下也可以这样写{% if today_number == 1 %}
,但是你明白了逻辑
如果上述条件为真,我们这样做:
{{ today | plus: single_day | date: '%Y/%m/%d' }}
- 这将今天的时间戳和single_day
时间戳相加,给我们明天的日期
如果 if 语句返回 false,我们将进入{% else %}
设置几个变量的语句。
{% assign days_until_next = 9 | minus: today_number %}
- 因为我们从第二天开始计算,所以我使用数字 9 作为基数并减去当前值today_number
,例如,如果今天是星期二,我们有 2 和9-2=7
,所以这意味着下一个星期二是从现在起 7 天。
{% assign days_unix = days_until_next | times: single_day %}
- 这只是计算单日的 unix 数乘以到下周二的天数。所以如果我们继续上面周二的例子,你会得到86400*7=604800
{{ today | plus: days_unix | date: '%Y/%m/%d' }}
- 最后,我们将今天的 unix 数字与直到下周二的那几天的 unix 数字相加,然后将其转换为可读的日期。
希望这很简单,可以遵循。
祝你有美好的一天!
归档时间: |
|
查看次数: |
3118 次 |
最近记录: |