2012-11-09 9 views
5

Ho appena iniziato a lavorare con NodaTime. Nella mia app, l'utente crea un evento e sceglie un fuso orario. Indipendentemente dal fatto che io usi la lista dei fusi orari BCL (Windows) o la lista TZDB (Olson) (e non li mescoli!), Ho bisogno di mantenere l'id del fuso orario nel mio database in modo da poter ricreare in seguito il fuso orario -tempo di tempo.È sicuro memorizzare gli ID dei fusi orari in un database o possono cambiare?

Dato che gli ID di fuso orario sembrano essere in qualche modo arbitrari e non sono uno standard ISO, posso contare sul fatto di trovare sempre quell'ID in futuro quando chiamo GetZoneOrNull?

Suppongo che il metodo GetZoneOrNull sia la difesa contro ciò che accade; cioè, quando viene passato un id che non esiste nella propria raccolta Ids. La mia domanda è: se un ID è stato recuperato dalla raccolta Ids, posso fidarmi che GetZoneOrNull non restituirà mai in futuro nulla?

Ma se un ID può scomparire dalla cronologia, qual è la migliore strategia per affrontarlo?

risposta

6

Ovviamente, se si passa da un fuso orario all'altro di Windows a TZDB, gli ID del fuso orario saranno diversi. Gli ID del fuso orario di Olson sono pensati per essere stabili e non dovrebbero cambiare. Anche se lo dico, ci sono stati cambiamenti nel passato, ma i vecchi Id esistono ancora e sono alias per i nuovi. Tutti gli ID "regione/città" sono il nuovo stile e tale schema è stato scelto in modo che non dovessero mai più cambiare. I vecchi id erano talvolta denominati in base a nomi legali di fuso orario che sono soggetti a modifiche.

Stiamo memorizzando l'ID Olson del fuso orario in una tabella sul mio progetto corrente.

Non riesco a parlare per gli id ​​del fuso orario di Windows.

+0

Scelgo TZDB o Windows, che si sporge verso Olson per essere sincero nel caso in cui avessi bisogno di parlare con il mondo esterno. Mi piace il fatto che facciano l'alias dei vecchi ID a quelli nuovi, il che fa andare via il problema, credo. Non sono sicuro che Windows adotterà la stessa convenzione ma ti piacerebbe pensarlo. A causa di questo dubbio, userò Olson. Grazie. –