Для Net 2.0 и 1.1 вы можете использовать класс TimeZone, который теперь заменен классом TimeZoneInfo.
Edit после дальнейших исследований Казалось бы, что перед NET 3.5 все, что было доступно был класс TimeZone. Невозможно рассчитать значение TimeDate для часовых поясов, отличных от локального и UTC. Поэтому, если вы хотите рассчитать время как EST или PST, и вы находитесь в Великобритании, все становится немного сложнее.
Вот короткая демонстрационная программа для использования TimeZone (его из основного консольного приложения .:
class Program
{
static void Main(string[] args)
{
DateTime time = DateTime.UtcNow;
Console.WriteLine(string.Format("UTC time is {0}", time.ToShortTimeString()));
TimeZone zone = TimeZone.CurrentTimeZone;
//The following line depends on a call to TimeZone.GetUtcOffset for NET 1.0 and 1.1
DateTime workingTime = zone.ToLocalTime(time);
DisplayTime(workingTime, zone);
IFormatProvider culture = new System.Globalization.CultureInfo("en-GB", true);
workingTime = DateTime.Parse("22/2/2010 12:15:32");
Console.WriteLine();
Console.WriteLine(string.Format("Historical Date Time is : {0}",workingTime.ToString()));
DisplayTime(workingTime, zone);
Console.WriteLine("Press any key to close ...");
Console.ReadLine();
}
static void DisplayTime(DateTime time, TimeZone zone)
{
Console.WriteLine(string.Format("Current time zone is {0}", zone.StandardName));
Console.WriteLine(string.Format("Does this time include Daylight saving? - {0}", zone.IsDaylightSavingTime(time) ? "Yes" : "No"));
if (zone.IsDaylightSavingTime(time))
{
Console.WriteLine(string.Format("So this time locally is {0} {1}", time.ToShortTimeString(), zone.DaylightName));
}
else
{
Console.WriteLine(string.Format("So this time locally is {0} {1}", time.ToShortTimeString(), zone.StandardName));
}
Console.WriteLine(string.Format("Time offset from UTC is {0} hours.", zone.GetUtcOffset(time)));
}
}
Как вы можете видеть, что имеет дело только с местным временем и UTC.
ARE YOU Afte времени часового пояса (7:38:33 EST) или изменить формат даты (08/22/2010)? – ChrisBD
Извините, не возможно без использования 3.5 или разработки собственного, который декодирует текущий часовой пояс, а затем вычитает его. –
Хорошо, re после преобразования времени в соответствии с часовым поясом, например, с 11:00 по Гринвичу до 0600 EST. Еще несколько вопросов: нужно ли просто показывать время пользователю? с учетом корректировок на летнее время и исторических времен, например. 1100 GMT может быть 0700 EST с летним временем, но что, если это было 1100 GMT, когда переход на летнее время не применялся? О, и ему нужно работать с Net 2.0 или 1.1. – ChrisBD