c++ localtime beim Wechsel der Zeitzone
Habe ich eine setup-arbeiten mit localtime (), um eine tm mit den lokalen Zeiten vertreten. Und das ist alles gut.
Jedoch, wenn ich die Zeitzone ändern, während die Anwendung ausgeführt wird, es nicht bemerkt, dass ich mich geändert habe timezones.
Gibt es eine Möglichkeit zu sagen, Sie 'gehen Sie wieder sehen' zu aktualisieren, um die system-Zeitzone?
Ich weiß, dies ist wahrscheinlich nicht ein üblicher Fall, aber es ist das, was test sind dabei diese Funktion zu testen, so Sie es wollen unterstützt!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt nichts in der standard-Bibliothek, dies zu tun. Es sei denn, Ihre Plattform bietet einige Erweiterung der Bibliothek für die Aktualisierung des Zeit-zone, das Programm Aufrufe
localtime()
wird wahrscheinlich immer wieder verwenden die Zeitzone, die aktiv am Programm starten.Wahrscheinlich könnte man umgehen, indem man die
localtime
Sachen in einem separaten Prozess, dass dein main-Programm können Sie das starten und Herunterfahren wird, so re-initialisieren, dass der Prozess der Zeitzone.Oder statt Ihrer Plattform bieten einige andere API auf, um die lokale Zeit, die änderungen in der system-Zeitzone.
Werfen Sie einen Blick auf
tzset
(dies ist nur posix). Dies könnte Ihnen, was Sie brauchen. Wenn IhrTZ
Umgebungsvariable nicht gesetzt ist, sollte es neu initialisieren vom OS.Aus der man-page:
Einen einfachen test:
Gibt mir die Ausgabe: