Generuję dwa zestawy powtarzających się zdarzeń w oddzielnych iteracjach pętli, ale mam konflikt podczas porównywania wygenerowanych wyników dla konfliktów. Wydaje się, że czasy się cofają i nie jestem pewien, jak rozwiązać ten problem?Jak radzić sobie, gdy strefa czasowa cofa się w przyszłości
pierwszego powtórzenia Impreza:
- powtarzać codziennie o godzinie 00:00 do 01:00 w "Europe/Stockholm" Czas
- z 03/11/2015
- pętli aż na wieki.
Drugim wydarzeniem będzie powtarzać:
- powtarzać codziennie o 01:00 do 02:00 w "Europe/Stockholm" czas
- z 03/11/2015
- ponownie pętli na zawsze .
Aby wygenerować zdarzeń mam przelotowego codziennie w lokalnej strefy czasowej „Europa/Stockholm” używając Nodatime tak:
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))
Mój problem powstaje w dniu 29 października/30-cia 2016 Kiedy zegary przejść wstecz i druga reguła jest w konflikcie z pierwszą. http://www.timeanddate.com/time/change/sweden/stockholm?year=2016
czasów konfliktu są następujące:
- "2016-10-29T23: 00: 00Z" na "2016-10-30T01: 00: 00Z"
- „2016-10- 30T00: 00: 00Z”na "2016-10-30T01: 00: 00Z"
Używam algorytm podobny do tego, aby przetestować konfliktów https://stackoverflow.com/a/325964/884132
Jak radzić sobie z tymi konfliktami czasowymi?
Szybka myśl: można sprawdzić [IsDaylightSavingTime] (https://msdn.microsoft.com/en-us/library/bb460642 (v = vs.110) .aspx), aby wykryć zmianę między ostatnim a bieżący przebieg. Oznacza to, że musisz śledzić wynik ostatniego uruchomienia IsDaylightSavingTime i porównać go z bieżącym przebiegiem. –
można zapisać datę ostatniego "wykonania" zdarzenia i uniemożliwić drugie "wykonanie" –
Mam zaktualizowane moje pytanie z większą ilością informacji i próbkę, gdy czasy są w konflikcie. – Dizzle