Попробуйте этот метод -
TimeZoneInfo.ConvertTimeToUtc Method (DateTime)
DateTime.ToUniversalTime использует текущее правило, а не то которое действовало на дату в DateTime.
С
MSDN (см. "Note")-
Цитата:
If the current computer's local time zone includes multiple adjustment rules, this overload of the ConvertTimeToUtc method can return results that differ from the TimeZone.ToUniversalTime and DateTime.ToUniversalTime methods. TimeZone.ToUniversalTime always applies the current adjustment rule to time zone conversion, whether or not dateTime lies within its date range. And when executing on .NET Framework 3.5, DateTime.ToUniversalTime also applies the current adjustment rule to time zone conversion, whether or not dateTime lies within its date range.