ESP8266 - Micropython - Zeitdiskrepanz

Oct 16, 2018 5 Replies

Hallo Leute,



Ich habe hier einen ESP8266 mit Micropython am laufen, welcher zyklisch Daten in eine Datenbank schreibt. Seit dem 25.September haben diese Daten einen Offset von 1h, den ich mir


Ich habe heute um 21:36Uhr folgendes eingeben und die entsprechenden Antworten erhalten:



>> ntptime.settime()

(2018, 10, 16, 19, 36, 52, 1, 289)



>> utime.localtime()

(2018, 10, 16, 19, 36, 54, 1, 289)



>> utime.time()


593033820



Da utime als Begin das Jahr 2000 hat, ich in der Datenbank auf meinem Webserver aber mit einer normalen UNIX-Zeit rechne, addiere ich auf den Zeitstempel im PHP-Script, welches die Daten entgegennimmt einfach 30 Jahre:



$str = strtotime(date( 'Y-m-d H:i:s', $TickTime ) . " +30 year");



Das hat bis zum 24. September funktioniert, seit dem 25. September habe ich jetzt ne Stunde Offset.



Was mache ich falsch?


Michael


Michael S. schrieb:

Antwort ist: In der Nacht vom 24. auf den 25. September 1988(!) wurde in Deutschland die Uhr von Sommer- auf Winterzeit umgestellt. Mit date( 'Y-m-d H:i:s', $TickTime ) bekommst Du ja ein Datum in 1988

Christian

Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA

Am 16.10.2018 um 22:02 schrieb Christian Zietz:

Super, das hilft mir weiter. Mich hat irritiert, dass wenn ich den Zeitstempel in einen Online-Zeitstempelumrechner kopiert habe, ich auch schon 1988 um 1h danebenlag. Bei dem hier:

formatting link

Der scheint aber eben gerade nicht UTC auszugeben.

Michael

Michael S. schrieb:

der Unix-Epoche und dem Beginn der utime-Epoche liegen. Je nachdem, ob

komplizierter sein, aber diese Berechnung musst Du nur einmalig

$TickTime, bevor Du es 'date' oder anderen Funktionen vorsetzt, die Zeitzonen und Sommerzeit beachten.

Christian

Christian Zietz - CHZ-Soft - czietz (at) gmx.net WWW: http://www.chzsoft.de/ PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA

Am 16.10.2018 um 22:20 schrieb Christian Zietz:

Genau so habe ich es jetzt gemacht: $SQLTickTimeStr = strtotime(date( 'Y-m-d H:i:s', $TickTime+946684800 ));

Michael

Das war bis vor kurzem das Ende der Sommerzeit.

/ \ Mail | -- No unannounced, large, binary attachments, please! --

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required