Hallo
Bis dato hatte ich Datums und Uhrzeiteingfaben im WF immer über mehr oder weniger umständliche Kombinationen aus Stringvariabeln gebaut.
Jetzt wollte ich mal das ~UnixTimestampTime Profil probieren.
Wenn ich eine Variable mit dem Profil versehe, so krieg ich im WF auch brav das entsprechende Control.
Der an ein Script rückgelieferte Wert ist aber um 82800 Sekunden zu hoch.
Bsp:
Ich stelle im WF 00:00:00 ein, es wird als Integer aber 82800 rückgeliefert.
Ich stelle Im WF 01:00:00 ein, so wird 86400 rückgeliefert.
Da es sich um eine Uhrzeit handelt würd ich mir für 00:00:00 entweder „0“ oder wegen Sommerzeit „3600“ oder meinetwegen „-3600“ erwarten aber nicht 82800.
Ich habe 00:00:00 eingestellt. Das sollte als Integer doch „0“ sein.
Also dem UnixTimestamp 01.01.1970 00:00:00 entsprechen.
IPS gibt mir aber nicht „0“ sondern „82800“ welches dem 02.01.1970 00:00:00 entspricht.
Edit: Nochmal nachgedacht hab ich vielleicht die Antwort. Der Unix Timestamp ist uINT, kann also nicht negativ werden. Der Versatz um einen Tag ist notwendig um 00:00:00 in den östlichen Zeitzonen abbilden zu können.
Ich vermute die Aussage von Dr.Niels bezieht sich auf die Implementierung in IPS für ~UnixTimestampTime, wenn keine Datumskomponente, sondern nur die Zeit enthalten ist?!
Ich vermute, in ~UnixTimestampTime ist ausschließlich die Uhrzeit enthalten, wobei das Datum vollständig egal ist. In ~UnixTimestampDate ist nur das Datum enthalten und die Zeit ist egal. Und wer beides möchte, nutzt ~UnixTimestamp.
Ich aber nur eine schnell geschriebene Vermutung, ohne es zu testen. Ich interpretiere die Aussagen von @Dr.Niels dahingehend.
Klar, das geht ja schon aus dem Namen und der Doku hervor.
Die Ausgangsfrage war doch warum IPS für 00:00:00 ein „82800“ als Integer zurückliefert. es wäre doch eher „0“ oder wegen Sommerzeit ein „3600“ zu erwarten.
Vermutung: sonst würde es beim Wechsel eine östliche Zeitzone einen negativen Wert geben, und denn will man wohl wegen INT vs. uINT vermeiden.
0 wäre in den meisten Zeitzonen aber einfach nicht 00:00 Uhr und damit falsch. In meiner deutschen Zeitzone wäre der UnixTimestamp 0 beispielsweise 1:00 Uhr am 1.1.1970. Somit ist es also 82800, was in meiner Zeitzone 00:00 Uhr am 2.1.1970 ist. Da die Tageskomponente wie gesagt irrelevant ist, passt das auch. Ich vermute implementationsseitig wird der erste nicht negative Timestamp gewählt. Ich würde euch eigentlich empfehlen, die genauen Zahlen hier zu ignorieren und einfach mit tollen PHP-Befehlen wie date die für euch relevanten Zahlen da rauszuholen.