Tôi đang sử dụng hàm mktime (struct tm *) trong Suse 10.Hành vi khó hiểu của mktime trên Linux?
Bây giờ, tôi nhận thấy một số hành vi lạ khi thời gian tiết kiệm ánh sáng ban ngày được bật. Giả sử tôi đã bật thời gian tiết kiệm ánh sáng ban ngày để bắt đầu vào ngày 15 tháng 9 lúc 18:10 và hiệu chỉnh ánh sáng ban ngày trong 30 phút. Bây giờ, khi tôi gọi mktime với cấu trúc tm có ngày là 15 tháng 9 18:10 và tm_isdst được đặt thành 0, sau đó tôi lấy lại cùng giá trị trong cấu trúc tm chỉ với tm_isdst được đặt thành 1.
Nhưng, nếu vượt qua ngày là 15 tháng 9 18:10 với tm_isdst đặt thành 1, thì tôi thấy thời gian đã thay đổi thành 17:40. Sự điều chỉnh trong cấu trúc tm này được chú ý trong khoảng thời gian từ ngày 15 tháng 9 năm 18:10 đến ngày 15 tháng 9, 18:40, nhưng sau đó không có sự điều chỉnh nào xảy ra và cờ dst vẫn được kích hoạt. Ngay cả khi tôi vượt qua ngày 16 tháng 9 năm 18:10, không có chỉnh sửa thời gian xảy ra chỉ cờ dst vẫn được kích hoạt.
Tôi hoàn toàn bối rối. Đây có phải là hành vi đúng đắn của mktime không?
Tôi không biết.Có lẽ nó không xác định để vượt qua thời gian 18:10 (dst 0) để mktime, nhưng tôi nghĩ rằng điều hữu ích nhất để trở lại trong trường hợp đó sẽ là 18:40 (dst 1) –