2014-01-11 4 views
15

Ich erstelle eine "Integration URL" in Desk.com, die die Filter Syntax von Shopify Liquid Template verwendet. Diese URL muss ein "Startdatum" und ein "Enddatum" für eine Abfrage enthalten, bei der das Startdatum vor 7 Tagen liegt und das Enddatum gerade liegt.Datum Mathe/Manipulation in Flüssigkeit Template Filter

Um dies zu erreichen, denke ich, ich muss 7 Tage (604800 in Epoch Zeit) von dem "jetzt" -Objekt subtrahieren und dann meine Formatierung anwenden, aber ich kann keine gültige Syntax dafür herausfinden.

Für die aktuelle Zeit, diese Syntax ist gültig und Arbeits: {{'now' | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}}

Für 7 Tage vor, hier ist das Beste, was ich tun kann (funktioniert nicht): {{'now' | minus : 604800 | date: "%b %d, %Y %I:%M %p -0500" | uri_encode | replace:"+","%20"}}

Irgendwelche Vorschläge für eine gültige Syntax für "vor 7 Tagen" in Liquid? Würde mich sehr über jeden Rat freuen!

Antwort

34

Vielen Dank an @iveskev vom Desk.com „WOW“ Team für diese Antwort:

Wenn Sie {{'now'}} tun gibt es die Zeichenfolge „jetzt“ nicht einen Zeitstempel für die aktuelle Zeit. Also, wenn Sie {{'now' | minus: 604800 }} tun, gibt es "-604800" nicht die aktuelle Unix-Zeit minus 604800 zurück. Wenn Sie den date Filter verwenden, dann nimmt Flüssigkeit auf, dass Sie die aktuelle Zeit referenzieren und die Zeit als Zeichenfolge ausgeben. Aber selbst wenn wir 'jetzt' das aktuelle Datum ausgeben, subtrahieren wir immer noch von einer Zeichenkette und werden daher mit "-604800" zurückgegeben. Die einzige Zeit, in der die Mathematik für eine Zeichenfolge korrekt funktioniert, ist, wenn der Stich nur eine Zahl ist.

Um das richtige Datum zu erhalten, müssen wir zuerst den Unix-Zeitstempel für jetzt, die Subtraktion, dann umformatieren auf das gewünschte Format. Sie können %s verwenden, um Unix-Zeit zu erhalten. Um die aktuelle Zeit in Unix zu erhalten, wäre es also: {{'now' | date: '%s' }}

An diesem Punkt können Sie dann die Subtraktion und dann formatieren Sie die Zeit in der richtigen Weise. Wir können dies tun, auf einmal in der folgenden Aussage:

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

+1

Ehrfürchtig Ansatz. Dies ist jedoch nicht ganz korrekt (kann je nach Version, Renderer usw. unterschiedlich sein) - Sie müssen 'now' in Anführungszeichen haben:' "now" | Datum: "% s" | minus: 604800' –

+0

Danke, @ChrisHoughton. Ich überarbeite meine Antwort. – jonaz