Tôi đang tạo hai tập hợp sự kiện lặp lại trong các vòng lặp riêng biệt nhưng có xung đột khi so sánh kết quả được tạo cho các xung đột. Điều này có vẻ là khi thời gian quay trở lại và tôi không chắc chắn làm thế nào để giải quyết điều này?Làm thế nào để xử lý khi múi giờ đi ngược trong tương lai
Sự kiện lặp lại đầu tiên sẽ:
- lặp lại hàng ngày tại 0:00-01:00 trong "Châu Âu/Stockholm" Lần
- từ 2015/03/11
- vòng lặp cho đến mãi mãi.
Sự kiện lặp lại thứ hai sẽ:
- lặp lại hàng ngày tại 1:00-02:00 trong "Châu Âu/Stockholm" Lần
- từ 2015/03/11
- một lần nữa lặp mãi mãi .
Để tạo ra các sự kiện mà tôi đang Looping qua hàng ngày trong khu vực địa phương thời gian "Châu Âu/Stockholm" sử dụng Nodatime như thế này:
String timeZone = "Europe/Stockholm";
for (ZonedDateTime date_Local = repeatSeriesStartDate_Local; date_Local <= LoopEndDate_Local; date_Local = new ZonedDateTime(Instant.FromDateTimeUtc(date_Local.ToDateTimeUtc().AddDays(1).ToUniversalTime()),timeZone))
Vấn đề của tôi xuất hiện vào ngày 29/30 2016 Khi đồng hồ đi ngược lại và quy tắc thứ hai xung đột với quy tắc đầu tiên. http://www.timeanddate.com/time/change/sweden/stockholm?year=2016
Giờ mâu thuẫn như sau:
- "2016-10-29T23: 00: 00Z" thành "2016-10-30T01: 00: 00Z"
- "2016-10- 30T00: 00: 00Z" thành "2016-10-30T01: 00: 00Z"
tôi đang sử dụng một thuật toán như thế này để kiểm tra xung đột https://stackoverflow.com/a/325964/884132
Tôi nên xử lý các xung đột chuyển dịch thời gian này như thế nào?
Chỉ cần suy nghĩ nhanh: bạn có thể kiểm tra [IsDaylightSavingTime] (https://msdn.microsoft.com/en-us/library/bb460642 (v = vs.110) .aspx) để phát hiện thay đổi giữa lần chạy cuối cùng và chạy hiện tại. Điều này có nghĩa là bạn cần theo dõi kết quả của lần chạy IsDaylightSavingTime lần cuối và so sánh với lần chạy hiện tại. –
bạn có thể lưu ngày "thực thi" cuối cùng của sự kiện và ngăn chặn "thực hiện" thứ hai –
tôi đã cập nhật câu hỏi của mình với nhiều thông tin hơn và một ví dụ về thời điểm xung đột. – Dizzle