Ich habe die folgenden Zweifel an der Verwendung von tm_isdst Flag in der tm-Struktur. Wie pro Mann Seiten und Ergebnisse gegoogelt verstehe ich, dass sein Wert interpretiert wird alsmktime und tm_isdst flag
A.folgt DST Ein Wert von 0 zeigt ist in der Tat für die dargestellte Zeit nicht
B. Ein Wert von 1 bedeutet, ist DST in der Tat
C. Ein Wert von -1 bewirkt, dass mktime überprüft, ob DST in Kraft ist oder nicht.
Es ist dieser dritte Punkt, der mich verwirrt. Mein Zweifel ist, wie mktime herausfinden kann, ob DST angewendet werden muss oder nicht.
Zum Beispiel
My Time Zone = GMT + 3:00
DST shifting = +1 Hour at 5:00 AM in January (to keep it simple)
Current UTC time = "01/Jan/2012 00:00:00"
UTC time in seconds time_t timetUTC = X seconds
Hence my time is = "01/Jan/2012 03:00:00"
Wie die Zeit vergeht, meine Zeit Wert ändert sich wie folgt
"01/Jan/2012 04:00:00" (X + 1 * 60 * 60)
"01/Jan/2012 05:00:00" (X + 2 * 60 * 60)
"01/Jan/2012 05:59:59" (X + 2 * 60 * 60 + 59)
"01/Jan/2012 05:00:00" (X + 3 * 60 * 60)
"01/Jan/2012 06:00:00" (X + 4 * 60 * 60)
Gemäß meinem Verständnis
tm tmMyTime = localtime_r(X + 2 * 60 * 60) will set tmMyTime.tm_isdst to 0
tm tmMyTime = localtime_r(X + 3 * 60 * 60) will set tmMyTime.tm_isdst to 1
Auf diese Weise, auch wenn alle anderen Komponenten von Die Struktur ist in beiden Fällen gleich, mktime (tmMyTime) kann p zurückgeben Roper UTC-Wert, abhängig vom Wert von tm_isdst.
Wenn ich nun tmMyTime.tm_isdst = -1 setze, welchen Wert würde mktime zurückgeben? Ich lese über TZ-Variable, Zeit-Datenbank usw. usw. Trotz all dem, wie kann mktime() herausfinden, ob die DST-Korrektur angewendet werden soll oder nicht für die tm-Werte, die zweimal auftreten können?
Wir haben keine Sommerzeit in unserer Zeitzone. Daher bin ich mir nicht sicher, ob mein Verständnis korrekt ist. Bitte korrigieren Sie mich, wenn ich falsch liege. Deine Hilfe ist sehr Willkommen.
Sie haben festgestellt, dass die Ortszeit mehrdeutig ist. Es ist. –