timezone nodatime

timezone - ¿Es seguro almacenar identificadores de zona horaria en una base de datos o pueden cambiar?



nodatime (1)

Obviamente, si cambia entre las zonas horarias de Windows y TZDB, los Ids de la zona horaria serán diferentes. Los identificadores de zona horaria de Olson están destinados a ser estables y no deberían cambiar. Aunque digo eso, ha habido cambios en el pasado, pero los viejos Ids todavía existen y son alias para los nuevos. Todos los identificadores de "región / ciudad" son el nuevo estilo y ese esquema fue elegido para que nunca tengan que volver a cambiar. Los identificadores antiguos a veces se nombran según los nombres legales de la zona horaria que están sujetos a cambios.

Estamos almacenando Olson Id de la zona horaria en una tabla de mi proyecto actual.

No puedo hablar por los identificadores de zona horaria de windows.

Acabo de empezar a trabajar con NodaTime. En mi aplicación, el usuario crea un evento y elige una zona horaria. Independientemente de si utilizo la lista de zonas horarias BCL (Windows) o la lista TZDB (Olson) (¡y no las mezclo!), Debo conservar la identificación de la zona horaria en mi base de datos para poder luego recrear la zona horaria tiempo-consciente

Dado que los identificadores de zona horaria parecen ser algo arbitrarios y no son un estándar ISO, ¿puedo confiar en que siempre encontraré esa identificación en el futuro cuando llame a GetZoneOrNull?

Supongo que el método GetZoneOrNull es la defensa contra eso; es decir, cuando se pasa una identificación que no existe en su propia colección de Ids. Mi pregunta es: si se ha recuperado una identificación de la colección de Ids, ¿puedo confiar en que GetZoneOrNull en el futuro no devolverá nulo?

Pero si un Id puede desaparecer de la historia, ¿cuál es la mejor estrategia para lidiar con eso?