如何在Shopify Liquid的Case语句中嵌入时间判断实现分时段分日期消息展示
Shopify Liquid 实现按伦敦时间+日期展示不同消息
首先需要注意两个核心要点:
- 强制使用伦敦时区获取当前时间,避免时区偏差
- 将时间转换为24小时制的小时数(而非字符串格式的时分),方便直接做数值比较
修改后的完整代码如下:
{% comment %} 获取伦敦时区的当前日期和小时数 {% endcomment %} {% assign day = 'now' | date: '%A', tz: 'Europe/London' %} {% assign current_hour = 'now' | date: '%H', tz: 'Europe/London' | plus: 0 %} {% comment %} 转成数字方便比较 {% endcomment %} {% case day %} {% when "Monday" %} {% if current_hour < 16 %} <p>周一专属:伦敦时间16点前,订单今日处理</p> {% else %} <p>周一专属:伦敦时间已过16点,订单将在周二处理</p> {% endif %} {% when "Tuesday" %} {% if current_hour < 16 %} <p>周二专属:16点前下单,今日发货</p> {% else %} <p>周二专属:16点后下单,明日发货</p> {% endif %} {% when "Wednesday" %} {% if current_hour < 16 %} <p>周三专属:今日特惠截止到16点</p> {% else %} <p>周三专属:明日特惠即将开启</p> {% endif %} {% when "Thursday" %} {% if current_hour < 16 %} <p>周四专属:16点前下单享优先配送</p> {% else %} <p>周四专属:16点后下单,订单将在周一处理</p> {% endif %} {% when "Friday" %} {% if current_hour < 16 %} <p>周五专属:周末前最后发货时段,16点前下单今日发</p> {% else %} <p>周五专属:16点后下单,我们下周一见!</p> {% endif %} {% when "Saturday" %} {% if current_hour < 16 %} <p>周六专属:周末客服在线到16点,有问题随时咨询</p> {% else %} <p>周六专属:客服已下线,周一回复您的咨询</p> {% endif %} {% when "Sunday" %} {% if current_hour < 16 %} <p>周日专属:16点前可预约周一配送</p> {% else %} <p>周日专属:16点后预约,配送将安排在周二</p> {% endif %} {% else %} <p>抱歉,暂时无法获取当前日期信息</p> {% endcase %}
关键修改说明:
- 时区指定:通过
tz: 'Europe/London'参数强制使用伦敦时区,避免Shopify默认时区(通常为商店设置时区)导致的时间偏差 - 时间处理:用
%H获取24小时制的小时数,再通过plus: 0转换为数字类型,直接用<做数值比较,比字符串格式的%R更可靠 - 分支嵌套:在每个
{% when %}分支内直接嵌套{% if %}判断,实现「日期专属内容+时间分段消息」的组合逻辑
你可以根据实际需求替换每个分支里的消息文本,保持结构不变即可。
内容的提问来源于stack exchange,提问作者LukeTerzich
相关产品推荐
相关产品推荐

