¿Hay de todos modos que pueda convertir una zona horaria "Australia/Melbourne" en algún objeto de biblioteca de clases base de .NET?

StackOverflow https://stackoverflow.com/questions/661848

  •  20-08-2019
  •  | 
  •  

Pregunta

Tengo algunos datos de un tercero que incluye algunos string Language datos de propiedad. Algunos datos de muestra recuperados se ven como:

"Australia/Melbourne"

Cuando investigué en lo que se basaba el tipo de datos de la propiedad, es un Información de zona (base de datos TZ / OLSON). ¿Que demonios es eso? Busqué en Google y aquí está la información ...

Parece que es utilizado por muchas plataformas importantes ... pero no .NET.

Entonces, antes de reinventar la rueda (o, más al punto, actualizar el código de ese sitio de CodePlex para incrustar la lista de DB en la DLL), ¿esto ya existe en la biblioteca de clases base de .NET?

¿Fue útil?

Solución

Es una información de zona (base de datos TZ / base de datos OLSON). ¿Que demonios es eso?

Es el portátil, más o menos estándar forma de representar zonas horarias. Es una pena que .NET no lo admita correctamente, en mi opinión.

¿Estás usando .NET 3.5? Si es así, el TimeZoneInfo La clase es el mejor soporte que tenemos, pero la conversión del nombre de Olson al nombre de Windows puede ser complicado. Idealmente, desea una conversión de Olson ID a la identificación que usa Windows ... Sin embargo, no sé si hay una disponible.

Editar: después de un poco de excavación, un par de enlaces:

No sé con qué frecuencia se mantienen actualizados, pero pueden ser su mejor opción.

Otros consejos

Hay una gran biblioteca de .NET en el proyecto de código que hace exactamente lo que necesita:

http://www.codeproject.com/kb/locale/zoneinfo_dotnet_api.aspx

http://zoneinfo.codeplex.com/

Utilizo esto en varios proyectos que hablan con las API de Google, ya que todas sus zonas horarias están en formato de base de datos ZoneInfo/Olsen.

También escribí una publicación de blog sobre cómo configurarlo: http://www.diariofaninja.com/blog/2011/05/27/how-to-use-zoneinfotz time-zones-innet-applications

convertirlo a GMT? Busque el +x hrs o -x hrs y luego reste el desplazamiento desde la fecha/hora que ha almacenado. p.ej. En su ejemplo, reste 10, ya que Melbourne es +10 GMT?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top