Ich glaube, die folgenden Aussagen wahr in Linux ist mindestens: Zeitzone Infos von/usr/share kommt/zoneinfo /. Lokalzeit liest/etc/localtime, die eine Kopie der entsprechenden Datei von zoneinfo sein sollte. Sie können sehen, was drin ist, indem Sie zdump -v
für die Zeitzonendatei ausführen (zdump kann in sbin sein, aber Sie benötigen keine erhöhten Berechtigungen, um Zeitzonendateien damit zu lesen). Hier ist ein Ausschnitt von einem:
/usr/share/zoneinfo/EST5EDT Sun Nov 6 05:59:59 2033 UTC = Sun Nov 6 01:59:59 2033 EDT isdst=1 gmtoff=-14400
/usr/share/zoneinfo/EST5EDT Sun Nov 6 06:00:00 2033 UTC = Sun Nov 6 01:00:00 2033 EST isdst=0 gmtoff=-18000
/usr/share/zoneinfo/EST5EDT Sun Mar 12 06:59:59 2034 UTC = Sun Mar 12 01:59:59 2034 EST isdst=0 gmtoff=-18000
/usr/share/zoneinfo/EST5EDT Sun Mar 12 07:00:00 2034 UTC = Sun Mar 12 03:00:00 2034 EDT isdst=1 gmtoff=-14400
/usr/share/zoneinfo/EST5EDT Sun Nov 5 05:59:59 2034 UTC = Sun Nov 5 01:59:59 2034 EDT
Ich denke, Sie könnten dies selbst analysieren, wenn Sie wollen. Ich bin nicht sicher, ob es eine stdlib Funktion ist, die nur die gmtoff gibt (es gut sein kann, aber ich weiß nicht, ...)
edit: Mann tzfile beschreibt das Format der Datei zoneinfo. Sie sollten in der Lage sein, einfach in eine Struktur des entsprechenden Typs zu mappen. Es scheint so zu sein, was zdump basierend auf einem strace tut.
"' tm' eine 'gmtoff' Feld hat" -> das ist eine Nicht-Standard-C-Bibliothek Erweiterung. – chux