2012-11-09 15 views
5

Właśnie zacząłem pracować z NodaTime. W mojej aplikacji użytkownik tworzy wydarzenie i wybiera strefę czasową. Niezależnie od tego, czy używam listy stref czasowych BCL (Windows), czy listy TZDB (Olson) (i nie mieszam ich!), Muszę zachować identyfikator strefy czasowej w mojej bazie danych, aby móc później odtworzyć strefę czasową -czasowy czas.Czy można przechowywać identyfikatory stref czasowych w bazie danych lub czy można je zmienić?

Biorąc pod uwagę, że identyfikatory strefy czasowej wydają się być nieco arbitralne i nie są standardem ISO, czy mogę liczyć na to, że zawsze znajdę ten identyfikator w przyszłości, gdy zadzwonię do GetZoneOrNull?

Zakładam, że metoda GetZoneOrNull stanowi obronę przed tym zdarzeniem; to znaczy, gdy zostanie przekazany identyfikator, który nie istnieje w kolekcji własnych identyfikatorów. Moje pytanie brzmi: jeśli identyfikator został pobrany z kolekcji identyfikatorów, czy mogę ufać, że GetZoneOrNull nigdy nie zwróci wartości null?

Ale jeśli Id może zniknąć z historii, jaka jest najlepsza strategia radzenia sobie z tym?

Odpowiedz

6

Oczywiście, jeśli przełączasz się między strefami czasowymi systemu Windows i TZDB, wtedy identyfikatory strefy czasowej będą inne. Identyfikatory strefy czasowej Olson mają być stabilne i nie powinny się zmieniać. Mimo że tak mówię, nastąpiły zmiany w przeszłości, ale stare identyfikatory nadal istnieją i są aliasami dla nowych. Wszystkie identyfikatory "regionu/miasta" są nowym stylem i ten schemat został wybrany tak, aby nigdy nie musiał się ponownie zmieniać. Dawne identyfikatory były czasami nazywane w oparciu o legalne nazwy strefy czasowej, które mogą ulec zmianie.

Przechowujemy identyfikator Olson strefy czasowej w tabeli w moim bieżącym projekcie.

Nie mogę mówić o identyfikatorach okien strefy czasowej.

+0

Będę wybierał TZDB lub Windows, pochylając się w kierunku Olsona, aby być uczciwym, na wypadek, gdyby potrzebowałem rozmawiać ze światem zewnętrznym. Podoba mi się fakt, że pseudonimy starych identyfikatorów do nowych, co sprawia, że ​​problem znika. Nie jestem pewien, czy Windows przyjmie tę samą konwencję, ale chciałby tak myśleć. Z powodu tej wątpliwości zamierzam użyć Olsona. Dzięki. –

Powiązane problemy