Jak poprawnie pracować ze strefą czasową?
Dużo czytamstrefa czasowa, offsetowy, utc, czas lokalny, funkcje javascript, DST, boczek i staram się to wszystko połączyć, aby zbudować solidną / poprawną strukturę dla mojej aplikacji.
Załóżmy, że moja aplikacja jest podobna do StackOverflow.
Tak właśnie robię ...
Serwer znajduje się w innym kraju, więc ustawiłem go na UTC 00:00.Przechowuję datę jakoDateTimeOffset
.Jestemnie przechowywanieTimeZoneID
.Data jest wysyłana do klienta w tym formacie:2012-07-19T14:30:00-03:00
.Używam filtra kątowego, aby przekonwertować go na czas lokalny.Mam kilka pytań na ten temat ...
1º Strefa czasowa serwera?O moim serwerze (pojedynczy serwer) ... czy powinien działać z „neutralnym” UTC (+00: 00)? A jeśli w przyszłości przeprowadzimy się na farmę, w której serwery działają w różnych lokalizacjach?
2º Co powinienem przechowywać?Obecnie przechowuję tylko datę jakoDateTimeOffset
. Czytam o zapisaniuTimeZoneID
ale nie widzę w tym żadnego zastosowania. Czy czegoś mi brakuje?
Lub powinienem przechowywać datę jakoDateTimeUtc
zTimeZoneID
i ręcznie konwertuj każdą datę za pomocąTimeZone
klasa?
Czy konwersja danych na kliencie jest bezpieczna? Lub konwersje daty powinny być zawsze po stronie serwera?
4º O DST.Korzystanie z mojego obecnego podejścia. Czy DST będzie przestrzegane?