液体模板过滤器中的日期数学/操作

jon*_*naz 21 date liquid-layout liquid shopify

我正在Desk.com中构建一个"集成URL",它使用Shopify Liquid Template过滤器语法.此URL需要包含查询的"开始日期"和"结束日期",其中开始日期是7天前,结束日期是现在.

为了实现这一点,我想我需要从'now'对象中减去7天(大纪元时间604800),然后应用我的格式,但我无法找出有效的语法.

对于当前时间,此语法有效且有效: __CODE__

7天前,这是我能想到的最好的(不工作): __CODE__

关于Liquid中"7天前"的有效语法的任何建议?非常感谢任何建议!

jon*_*naz 48

许多感谢@iveskev从Desk.com"WOW"团队这个答案:

如果这样做,{{'now'}}则返回字符串"now"而不是当前时间的时间戳.因此,如果这样做,{{'now' | minus: 604800 }}则返回"-604800",而不是当前的unix时间减去604800.当您使用date过滤器时,液体将启动您引用当前时间并将时间输出为字符串.然而,即使我们"现在"输出当前日期,我们仍然从字符串中减去,因此将返回"-604800".字符串上的数学运算正确的唯一时间是sting只是一个数字.

因此,为了获得正确的日期,我们首先必须获得unix时间戳,进行减法,然后重新格式化为所需的格式.你可以%s用来获得unix时间.因此,要获得unix中的当前时间,它将是: {{'now' | date: '%s' }}

此时,您可以进行减法,然后以正确的方式格式化时间.我们可以在以下声明中一次完成所有操作:

{{'now' | date: "%s" | minus : 604800 | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}}

  • 很棒的方法.这虽然不太正确(可能因版本,渲染器等而异) - 你需要在引号中加上`now`:`"now"| 日期:"%s"| 减号:604800` (2认同)