Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Before Medvedev tricks: 3
After Medvedev tricks: 4
Для чего-то чувствительного ко времени рекомендую использовать библиотеку NodaTime. Там своя база часовых поясов и они не привязаны к ОС. Ваш код тогда будет выглядеть вот так:
static void Main(string[] args)
{
DateTimeZone tzMoscow = DateTimeZoneProviders.Tzdb["Europe/Moscow"];
DateTimeZone tzLondon = DateTimeZoneProviders.Tzdb["Europe/London"];
System.Diagnostics.Debug.WriteLine("Before Medvedev tricks: " + calcTimeZoneShift(tzLondon, tzMoscow, "2010-01-01T13:00:00Z"));
System.Diagnostics.Debug.WriteLine("After Medvedev tricks: " + calcTimeZoneShift(tzLondon, tzMoscow, "2013-01-01T13:00:00Z"));
}
private static long calcTimeZoneShift(DateTimeZone tz1, DateTimeZone tz2, String time)
{
var date1 = InstantPattern.ExtendedIso.Parse(time).Value.InZone(tz1);
var date2 = InstantPattern.ExtendedIso.Parse(time).Value.InZone(tz2);;
return (date2.Offset - date1.Offset).Seconds / 3600;
}
И снова об «Incorrect time zone information for Russian time zones » [.Net bug, ID: 693286]