Forum: Mikrocontroller und Digitale Elektronik localtime STM32 tm_isdst


von Fragender (Gast)


Lesenswert?

Mit der Funktion localtime kann ich problemlos auf einem STM32 die 
Uhrzeit formatieren, jedoch sagt das Feld tm_isdst, dass aktuell keine 
Sommerzeit ist obwohl so sein sollte.

Ist das ggf. eine Implemantationssache?

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Fragender schrieb:
> Mit der Funktion localtime kann ich problemlos auf einem STM32 die
> Uhrzeit formatieren, jedoch sagt das Feld tm_isdst, dass aktuell keine
> Sommerzeit ist obwohl so sein sollte.

Und wo kommt deine Uhrzeit her. Ein nackter STM32 kennt die eher nicht, 
sowas stellt normalerweise ein Betriebssystem bereit und dein C/C++ 
framework ruft diese dann dort ab. Oder hast du localtime selbst 
implementiert damit diese deine Hardware entsprechend bedient?

Irgendwie fehlen bei deiner Frage wohl einige Informationen...?

von Fragender (Gast)


Lesenswert?

Ich hole über NTP die Uhrzeit und wandel den Zeitstempel mit localtime 
(welches ich nicht seölber implementiert habe) in ein tm* um.

Und dann ist tm_isdst stets 0 und es ist keine Sommerzeit.

Auch wenn ich tm_isdst auf -1 setze, kann ich mit einer erneuten 
Formatierung keine Umrechnung erzeugen:
1
tm* timeinfo = localtime(&u32Timestamp);
2
timeinfo->tm_isdst = -1;
3
time_t t = std::mktime(timeinfo);
4
timeinfo = localtime(&t);

von Lexa81 (Gast)


Lesenswert?

Fragender schrieb:
> Ich hole über NTP die Uhrzeit und wandel den Zeitstempel mit
> localtime (welches ich nicht seölber implementiert habe) in ein tm* um.
> Und dann ist tm_isdst stets 0 und es ist keine Sommerzeit.
> Auch wenn ich tm_isdst auf -1 setze, kann ich mit einer erneuten
> Formatierung keine Umrechnung erzeugen:
> tm* timeinfo = localtime(&u32Timestamp);
> timeinfo->tm_isdst = -1;
> time_t t = std::mktime(timeinfo);
> timeinfo = localtime(&t);

https://www.cplusplus.com/reference/ctime/tm/

Wie wäre es mit RTFM und einem Wert > 0?
Werte < 0 signalisieren der Lib, dass DST Info nicht bekannt.

von Fragender (Gast)


Lesenswert?

Lexa81 schrieb:
> Wie wäre es mit RTFM und einem Wert > 0?

Laut stackoverflow sagen viele, dass man gerade mit 0 oder 1 eine 
Ausgabe erzwingt. Wie dem auch sei, egal ob -1, 0 oder 1 es wird keine 
Sommerzeit generiert.

von Bauform B. (bauformb)


Lesenswert?

Damit localtime() funktioniert, muss die libc die Zeitzone und die 
Regeln für die Umstellung in dieser Zeitzone kennen. Auf "richtigen" 
Rechnern wird dazu tzdata installiert, auf einem STM32 wird man keine 
komplette libc haben (wollen). Also sollte man in der Richtung weiter 
forschen.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.