.NET convertissant datetime à UTC compte tenu du fuseau horaire
À l'aide de C#, j'ai besoin de les convertir en entrant des valeurs datetime en UTC. Je sais qu'il est de la fonctionnalité .NET pour ces conversions, mais tout ce que j'ai à identifier le fuseau horaire est le standard le fuseau horaire liste
http://www.timegenie.com/timezones
Quelle est la meilleure façon de le faire .NET? Ai-je besoin de créer une table de mappage pour convertir les fuseaux horaires à l'Id dans TimeZoneInfo.GetSystemTimeZones() (par exemple, "Heure normale du Pacifique (Mexique)")
de sorte que je peux ensuite utiliser TimeZoneInfo.FindSystemTimeZoneById()?
Merci pour toute aide
source d'informationauteur Bobbler
Vous devez vous connecter pour publier un commentaire.
Je l'ai fait avant d'en stocker l'id de fuseau horaire dans la base de données à l'aide d'une table de mappage. c'est à dire Un tableau contenant les résultats de
TimeZone.GetSystemTimeZones()
Vous n'avez pas besoin d'utiliser
TimeZoneInfo.FindSystemTimeZoneById()
: vous pouvez faire la conversion à l'aide de l'une des surcharges deTimeZoneInfo.ConvertTimeBySystemTimeZoneId()
. Cette méthode a des surcharges qui prennent des valeurs DateTime, et certains qui prennent des valeurs DateTimeOffset (qui sont préférables car ils indiquent sans équivoque le point dans le temps).par exemple
Le réel avantage de l'utilisation de l'heure du système id de zone plutôt que d'un décalage stockées dans la base de données est que l'heure d'été est géré automatiquement pour vous par
TimeZoneInfo.ConvertTimeBySystemTimeZoneId
.Il y a beaucoup d'informations sur MSDN sur la conversion à des fuseaux horaires différents.
Vous voudrez probablement utiliser ConvertTimeBySystemTimeZoneId méthode (suivez le lien pour des exemples).
DateTime.ToUniversalTime Méthode
Ou
DateTime.UtcNow Propriété