想知道是否有人可以帮助解决关于Liquid / Shopify的问题。如果您在同一周的周二下午12点之前订购,我正在与每周四提供产品的商店合作。
在向客户发出的通知中,我需要说明它将在哪个星期四发货,即'这个'或者'下一步'根据订单日期。我已经用液体中的以下逻辑完成了这项工作:
# Convert column to 2xN vector, grab row 2
row_2 = list(df[['B', 'C']].apply(tuple, axis=1))[1]
上面完成了这项工作。但是,我的任务是实际发布日期'交货周四。我绞尽脑汁想试着找出一种能用液体写一个功能的方法来告诉我这是什么'这个'星期四的日期是什么'下一个'星期四的日期将是。但是我要成为王牌。我知道如何使用内置函数在PHP和Ruby中执行此操作,但我是Liquid的新手,并且不认为它具有内置函数,因为它是一种标记语言(。所以我会认为你&# 39; d必须做一些unix时间数学运算,但这确实很复杂。
还有其他方式,还是我不得不求助于使用一些复杂的unix时间戳数学?
感谢。
答案 0 :(得分:1)
您将需要进行一些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 %}
我会尝试将其分解。
{% 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 %}
- 因为我们从第2天开始计算我使用数字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号码相加,然后将其转换为可读日期。
希望这很容易遵循。
祝你有美好的一天!