Staram się wykorzystać DateTimeOffset
do przekazania określonego momentu w dowolnej strefie czasowej. Nie wiem, jak TimeZoneInfo
radzić sobie z czasem letnim.
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));
To drukuje:
02.06.2010 16:37:19 6/2/2010 15:37:19 PM -06: 00
Jestem w centralnej strefie czasowej, a obecnie obowiązuje czas letni. Próbuję odczytać drugą linijkę:
02.06.2010 16:37:19 -05: 00
BaseUtcOffset
najwyraźniej nie zmienia się na podstawie czasu letniego.
Jak uzyskać właściwy czas z odpowiednią wartością przesunięcia?