C#中的时区转换

时间:2010-08-21 09:47:05

标签: c# datetime timezone

我有一个日期格式,类似于:

  

周一,2009年8月11日13:15:10 GMT

如何将其转换为EST格式?

2 个答案:

答案 0 :(得分:4)

这或类似应该做的伎俩:

var dateString = "Tue, 11 Aug 2009 13:15:10 GMT";
var date = Convert.ToDateTime(dateString);
var result = TimeZoneInfo.ConvertTime(date, TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"));

值得一提的是,您最初指定的 Mon,2009年8月11日实际上是不正确的,因此我已将其更改为星期二,2009年8月11日所以代码将运行,因为Convert.ToDateTime如果日期与日期不匹配则抛出异常。

我还假设您的意思是Eastern Standard Time,这是与“东部时间(美国和加拿大)”相关联的ID,但您可以通过运行以下内容获得可用时区的完整列表代码:

foreach(TimeZoneInfo info in TimeZoneInfo.GetSystemTimeZones())
{
    Console.WriteLine("Id: {0}", info.Id);
    Console.WriteLine("   DisplayName: {0}", info.DisplayName);
}

答案 1 :(得分:1)

var datetime = DateTime.Parse("Sat, 21 Aug 2010 13:15:10 GMT");
TimeZoneInfo estZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime estTime = TimeZoneInfo.ConvertTime(datetime, estZone);

EST可能意味着不同的时间,您想要的是:http://en.wikipedia.org/wiki/EST