J'essaie d'utiliser DateTimeOffset pour transmettre un moment spécifique dans n'importe quel fuseau horaire. Je n'arrive pas à comprendre comment utiliser TimeZoneInfo pour gérer l'heure d'été.Comment utiliser TimeZoneInfo pour obtenir l'heure locale pendant l'heure d'été?
var dt = DateTime.UtcNow;
Console.WriteLine(dt.ToLocalTime());
var tz = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
var utcOffset = new DateTimeOffset(dt, TimeSpan.Zero);
Console.WriteLine(utcOffset.ToOffset(tz.BaseUtcOffset));
Ceci affiche:
6/2/2010 4:37:19 PM
6/2/2010 3:37:19 PM -06:00
Je suis dans le fuseau horaire central, et nous sommes actuellement en heure d'été. Je suis en train d'obtenir la deuxième ligne à lire:
6/2/2010 4:37:19 PM -05:00
BaseUtcOffset ne semble change pas en fonction DST.
Comment puis-je obtenir le bon moment avec la bonne valeur de décalage?
+1 - il me rend fou que TimeZoneInfo.ConvertTimeBySystemTimeZoneId ne fonctionne pas seulement pour ce que je vois :) –