【问题标题】:Time zone conversion in C#C#中的时区转换
【发布时间】:2010-08-21 09:47:04
【问题描述】:

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

格林威治标准时间 2009 年 8 月 11 日星期一 13:15:10

如何将其转换为 EST 格式?

【问题讨论】:

    标签: c# datetime timezone


    【解决方案1】:

    这个或类似的应该可以解决问题:

    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, 11 Aug 2009 实际上是不正确的,因此我将其更改为 Tue, 11 Aug 2009 所以代码将运行,因为如果日期与日期不匹配,Convert.ToDateTime 将引发异常。

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

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

    【讨论】:

      【解决方案2】:
      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-10
        • 2011-08-15
        • 1970-01-01
        • 2014-11-17
        • 1970-01-01
        • 2017-03-05
        相关资源
        最近更新 更多