Hilfe bei datecalc auf Plenty-OrderCreatedAt

Hi Synesty,

ich steh grad ein wenig auf dem Schlauch:

Ich möchte ausgehend vom Plenty-Feld OrderCreatedAt den Zeitpunkt "24h vorher" berechnen. Und zwecks Weiterverarbeitung dann als Unix-Timestamp erhalten.

Die Api spuckt Daten in folgendem Format aus:

2019-02-11T23:25:31+01:00

Damit scheint DateCalc aber wohl nicht klar zu kommen?

Mit ${OrderCreatedAt?datetime("yyyy-MM-dd'T'HH:mm:ssXXX")} bekomme ich

Feb 11, 2019 11:25:31 PM

raus. Sieht egtl gut aus? Also möchte ich datecalc so aufrufen:

${datecalc(OrderCreatedAt?datetime("yyyy-MM-dd'T'HH:mm:ssXXX"), "DAY", -1)}

Aber dann beschwert es sich

Can't convert the date-like value to string because it isn't known if it's a date (no time part), time or date-time value.

Ich habe auch versucht noch ein ?string("yyyy-MM-dd HH:mm:ss") anzuhängen, damit der Timestamp auf jeden Fall well-formed ist. Aber die Meldung bleibt die gleiche.

Letzter Versuch war zuerst in Unix-Timestamp zu wandeln, aber das wird als malformed reklamiert:

${datecalc(OrderCreatedAt?datetime("yyyy-MM-dd'T'HH:mm:ssXXX")?long / 1000, "DAY", -1)}

Wie muss ich vorgehen damit ich am Ende den gewünschten Unixtimestamp "24h vor Bestellung" raus bekomme? Is bestimmt nicht schwer, aber ich seh den Wald grad vor Bäumen nicht ;)

Das ganze soll eine Spalte im Step 7 im Flow SH_sameDayPrio werden.

Bisher hab ich auf "ist von heute" geprüft (Spalte "Mitternacht"), aber künftig will ich wie gesagt alle raus bekommen die jünger als 24h sind.

Danke, Daniel

Oh, aber ich habe einen Workaround gefunden:


${(OrderCreatedAt?datetime("yyyy-MM-dd'T'HH:mm:ssXXX")?long / 1000) - (60 * 60 * 24)}


Erst in Sekunden wandeln. Wieviele Sekunden ein Tag hat ist ja bekannt dann ;-)


An einer Lösung mit datecalc wär ich trotzdem interessiert, sobalds um unregelmäßige Intervalle wie Monat geht komm ich so nicht weiter...

(Wundert euch nicht, ich hab den Flow umgebaut - hab gemerkt dass ich "24h vor JETZT" brauche, und nicht "24 vor OrderDatum"... Die Frage bleibt aber bestehen)

Hallo Daniel,


mit


${datecalc(OrderCreatedAt!?datetime("yyyy-MM-dd'T'HH:mm:ssXXX"), "DAY", -1)?long}


erhälst du den timestamp in ms für OrderCreatedAt.


Für NOW - 24 h kannst du einfach


${datecalc("DAY", -1)?long}


verwenden. Um an die timestamps in Sekunden zu kommen kannst du einfach noch / 1000 und die Runden Funktion verwenden