Shopify 主题与 Liquid

Shopify Liquid date 过滤器时间差 8 小时怎么修

现象#

订单、博客或评论的时间用 date 格式化后,总比后台看到的少 8 小时,跨零点的订单甚至会显示成前一天。

原因#

  • Liquid 的 date 按店铺时区渲染,但传入的若是 UTC 字符串时间戳,转换结果会与后台显示不一致
  • 格式串用了 PHP / JS 的写法(如 Y-m-d、HH:mm),Liquid 只认 %Y-%m-%d
  • 主题先输出时间戳,前端再用 new Date() 二次格式化,两次时区转换叠加
  • 店铺时区设置被改过,历史数据仍按旧时区渲染

处理步骤#

  1. 直接对原始字段格式化:{{ order.created_at | date: "%Y-%m-%d %H:%M" }},不要先转成字符串再解析
  2. 把格式串里的 Y、m、d 换成 %Y、%m、%d
  3. 需要在浏览器里做相对时间(几分钟前)时,输出 ISO 原文让前端只转换一次:<time datetime="{{ order.created_at | date: '%Y-%m-%dT%H:%M:%S%z' }}">
  4. 核对后台 设置 → 商店详细信息 里的时区,与运营同事确认展示口径

验收标准#

列表页、详情页的时间与后台订单详情完全一致;跨零点订单的日期不再前移一天。

本文由 风格技术 技术团队整理,适用于 Shopify 标准版与 Plus 店铺。Shopify 平台能力迭代较快,具体操作路径与字段以官方文档和店铺后台实际版本为准。