2014-01-11 3 views
15

Я строю «URL интеграции» в Desk.com, который использует синтаксис фильтра шаблона Shopify Liquid. Этот URL должен содержать «дату начала» и «дату окончания» для запроса, где дата начала - 7 дней назад, а дата окончания - прямо сейчас.Дата Математика/Манипуляция в Liquid Template Filter

Для этого я думаю, что мне нужно вычитать 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"}}

Любые предложения по действительный синтаксис для «7 дней назад» в Liquid? Был бы очень признателен за любые советы!

ответ

34

Большое спасибо @iveskev из «WOW» команда Desk.com для этого ответа:

Если вы {{'now'}} он возвращает строку «теперь» не метки времени для текущего времени. Поэтому, если вы делаете {{'now' | minus: 604800 }}, он возвращает «-604800», а не текущее время unix минус 604800. Когда вы используете фильтр date, тогда жидкость поднимает то, что вы ссылаетесь на текущее время, и выводит время в виде строки. Однако, даже если мы получим «сейчас» для вывода текущей даты, мы все равно вычитаем из строки и поэтому будем возвращать с «-604800». Единственный раз, когда математика на строке работает правильно, если укуса есть только число.

Итак, чтобы получить правильную дату, сначала нам нужно получить временную метку unix, выполнить вычитание, а затем переформатировать в желаемый formate. Вы можете использовать %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

Смежные вопросы