У меня есть различные часовые пояса и их GMT и DST. Пример:
TimeZoneId | GMT offset | DST offset
| 1. Jan 2010 | 1. Jul 2010
--------------------------------------------------
America/Adak | -10.0 | -9.0
America/Anchorage | -9.0 | -8.0
America/Anguilla | -4.0 | -4.0
America/Antigua | -4.0 | -4.0
America/Araguaina | -3.0 | -3.0
Это часовые пояса обеспечивается Геоименем.
Как я могу вычислить текущее время для какого-либо часового пояса knowning GMT и DST в C#/.NET?
Обновление: Для определения лучше я обеспечиваю "Америку/Антигуа", и мне требуется текущее время в "Америке/Антигуа".
TimeZoneInfo.ConvertTimeFromUtc(mytime, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));
private static ReadOnlyCollection<TimeZoneInfo> _timeZones = TimeZoneInfo.GetSystemTimeZones();
public static DateTime ToUsersTime(this DateTime utcDate, int timeZoneId)
{
return TimeZoneInfo.ConvertTimeFromUtc(utcDate, timeZones[timeZoneId]);
}
Пример преобразования даты UTC в дату пользователя с помощью класса TimeZoneInfo
(.NET 3.5+).