Tôi có nghi ngờ về việc sử dụng cờ tm_isdst trong cấu trúc tm. Theo trang người đàn ông và googled kết quả, tôi hiểu rằng giá trị của nó được giải thích như saucờ mktime và tm_isdst
A. Giá trị 0 chỉ ra DST không có hiệu lực cho lần đại diện
B. Giá trị 1 cho DST là có hiệu lực
C. Giá trị -1 gây ra mktime để kiểm tra xem liệu DST có hiệu lực hay không.
Đây là điểm thứ ba gây nhầm lẫn cho tôi. Nghi ngờ của tôi là làm thế nào mktime có thể tìm ra cho dù DST đã được áp dụng hay không chính xác.
Ví dụ
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"
Như thời gian trôi qua, những thay đổi giá trị thời gian của tôi như sau
"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)
Theo hiểu biết của tôi
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
Bằng cách này, mặc dù tất cả các thành phần khác của cấu trúc tm bằng nhau trong cả hai trường hợp, mktime (tmMyTime) có thể trả về p giá trị UTC roper, tùy thuộc vào giá trị tm_isdst.
Bây giờ, nếu tôi đặt tmMyTime.tm_isdst = -1, giá trị nào sẽ trở lại? Tôi đọc về biến TZ, cơ sở dữ liệu thời gian vv .. Bất chấp tất cả điều đó, về mặt logic như thế nào mktime() tìm ra liệu có áp dụng hiệu chỉnh DST hay không cho các giá trị tm có thể xảy ra hai lần?
Chúng tôi không có DST trong múi giờ của chúng tôi. Do đó tôi không chắc chắn liệu sự hiểu biết của tôi là chính xác hay không. Hãy sửa tôi nếu tôi sai. Sự giúp đỡ của bạn được đánh giá rất cao.
Bạn đã khám phá ra rằng giờ địa phương không rõ ràng. Nó là. –