2014-01-11 31 views
15

我构建“集成URL”中Desk.com,它使用Shopify液体模板过滤器语法。该URL需要包含开始日期为7天前和结束日期为止的查询的“开始日期”和“结束日期”。日期数学/操纵在液体模板过滤

要做到这一点,我想我需要从“现在”的对象减去7天(604800时代中的时间),然后申请我的格式,但我无法找出有效的语法为。

当前时间,这句法是啥工作:{{'now' | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}}

7天前,这里是最好的我能想出(不工作):{{'now' | minus : 604800 | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}}

上的任何建议Liquid中“7天前”的有效语法?将不胜感激任何意见!

回答

34

很大程度上得益于@iveskev从Desk.com“WOW”团队这个答案:

如果你{{'now'}}它返回字符串“现在”不是一个时间戳为当前时间。所以,如果你{{'now' | minus: 604800 }}当您使用date过滤器返回“-604800”不是当前的UNIX时间减去604800,然后液体拿起您引用当前时间和输出时间为字符串。但是,即使我们现在输出当前日期,我们仍然从字符串中减去,因此将以“-604800”返回。数字在字符串上唯一正确运行的时间是如果刺只是一个数字。

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

此时,您可以执行减法,然后以正确的方式格式化时间。我们可以在下面的语句一下子做到这一点:

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

+1

真棒方法。这虽然不太正确(可能因版本,渲染器等而异) - 您需要在引号中加入'now':'“now”|日期:“%s”|减去:604800' –

+0

谢谢,@ChrisHoughton。修改我的答案。 – jonaz