Pracuję nad oprogramowaniem, które uruchamia raporty dla urządzeń GPS, które działają 24/7/365. Część danych wyjściowych raportu wymaga, abyśmy konwertowali przechowywane czasy bazy danych (przechowywane w centralnym czasie standardowym) na czasomierze użytkowników (każda żądana strefa czasowa). Dwa razy w roku napotykamy na problem z DST, gdy ludzie uruchamiają raporty, które zaczynają się przed i kończą po zmianie czasu. To nie w jednej linii:Konwertowanie DateTimes w pobliżu oszczędności Daylight Daylight?
return TimeZoneInfo.ConvertTime(dateToConvert, DatabaseTime, UserTime);
dateToConvert
jest DateTime
zostać przekształcony. DatabaseTime
i UserTime
są obiektami TimeZoneInfo
. Nie robię niczego skomplikowanego ani skomplikowanego, ale DateTimes w pobliżu wyjątków czasu zmiany czasu DST. Takich jak 3/10/2013 2:02:11 AM
, mimo że jest "konwertowany" z czasu centralnego na czas centralny.
Jaka jest najlepsza metoda obsługi DateTimes w pobliżu zmian czasu DST?
To prawdopodobnie więcej przeróbek niż chcesz, ale lepiej byłoby przechowywać wszystkie daty/czasy w GMT (ponieważ CST przechodzi zmianę czasu letniego, są nieciągłości w skali, których nie ma w GMT) i tylko konwertować do celów wyświetlania (a także konwertować parametry wejściowe). – twalberg
Jeśli zaczynałem od zera, zdecydowanie bym to zrobił. Podoba mi się pomysł, aby dane były jak najbardziej neutralne i myślę, że byłby to sposób na zrobienie tego. –
Wystarczy, aby potwierdzić: Czy możliwe jest zapisanie '3/10/2013 2:02:11 AM' w bazie danych, biorąc pod uwagę, że znajduje się ona w pominiętej godzinie? –