Mam następujące wątpliwości dotyczące użycia flagi tm_isdst w strukturze TM. Zgodnie strony człowieka i googled wyniki, to rozumieć, że jego wartość jest interpretowany w następujący sposóbmktime i tm_isdst flag
A. Wartość 0 wskazuje DST nie jest w rzeczywistości do czasu reprezentowanego
B. wartość 1 oznacza DST w efekcie:
C. Wartość -1 powoduje, że mktime sprawdza, czy DST działa, czy też nie.
To jest ten trzeci punkt, który mnie myli. Mam wątpliwości, w jaki sposób mktime może ustalić, czy DST musi być stosowane, czy nie.
Na przykład
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"
miarę upływu czasu moje zmiany wartości pieniądza w czasie następująco
"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)
zgodnie z moim rozumieniem
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
ten sposób, mimo wszystkich innych komponentów w obu przypadkach struktura jest równa, mktime (tmMyTime) może zwrócić p roper Wartość UTC, w zależności od wartości tm_isdst.
Teraz, jeśli ustawię tmMyTime.tm_isdst = -1, jaką wartość zwróci mktime? Czytałem o zmiennej TZ, bazie danych czasu itp. Itd. Mimo wszystko logicznie w jaki sposób mktime() może dowiedzieć się, czy zastosować korektę DST, czy nie dla tych wartości tm, które mogą wystąpić dwa razy?
Nie mamy czasu letniego w naszej strefie czasowej. Dlatego nie jestem pewien, czy moje zrozumienie jest poprawne. Proszę, popraw mnie jeśli się mylę. Twoja pomoc jest bardzo ceniona.
Odkryłeś, że czas lokalny jest niejednoznaczny. To jest. –