Pregunta

Estoy construyendo una "URL de integración" en Desk.com, que utiliza la sintaxis de filtro de plantilla de Shopify Liquid.Esta URL debe contener una "fecha de inicio" y una "fecha de finalización" para una consulta donde la fecha de inicio es hace 7 días y la fecha de finalización es ahora.

Para lograr esto, creo que necesito restar 7 días (604800 en tiempo de época) del objeto 'ahora' y luego aplicar mi formato, pero no puedo encontrar una sintaxis válida para eso.

Por el momento, esta sintaxis es válida y funciona:

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

Hace 7 días, esto es lo mejor que se me ocurrió (no funciona):

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

¿Alguna sugerencia sobre una sintaxis válida para "hace 7 días" en Liquid?¡Agradecería mucho cualquier consejo!

¿Fue útil?

Solución

Muchas gracias a @iveskev del equipo "WOW" de Desk.com para esta respuesta:

Si lo haces {{'now'}} devuelve la cadena "ahora", no una marca de tiempo para la hora actual.Así que si lo haces {{'now' | minus: 604800 }} devuelve "-604800", no la hora actual de Unix menos 604800.Cuando usas el date filtro, luego el líquido detecta que está haciendo referencia a la hora actual y genera la hora como una cadena.Sin embargo, incluso si conseguimos que "ahora" genere la fecha actual, todavía estamos restando de una cadena y, por lo tanto, se devolverá "-604800".La única vez que las matemáticas en una cadena funcionan correctamente es si el aguijón es solo un número.

Entonces, para obtener la fecha correcta, primero tenemos que obtener la marca de tiempo de Unix por ahora, hacer la resta y luego reformatear al formato deseado.Puedes usar %s para obtener tiempo Unix.Entonces para obtener la hora actual en Unix sería:{{'now' | date: '%s' }}

En ese punto, puedes hacer la resta y luego formatear la hora de la manera correcta.Podemos hacer todo esto a la vez en la siguiente declaración:

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

Otros consejos

Para aquellos que usan Liquidjs no pude encontrar una manera sin tener un nuevo filtro, así que hice uno:

luego haciendo:

{{ 1 | day_ago | date "%Y-%m-%d" }}
2019-05-02

He publicado un problema en Liquidjs Repo: https://github.com/Harttle / Liquidjs / Problemas / 125

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top