【问题标题】:Convert a datetime from GMT to other (Eastern, Mountain, Pacific, Indian,..) formats将日期时间从 GMT 转换为其他(东部、山区、太平洋、印度、..)格式
【发布时间】:2009-08-10 10:50:39
【问题描述】:

我需要知道如何将 GMT 时区格式的日期时间转换为其他格式,例如 C#、asp.net 2.0 和 dot net framework 2.0 中的东部、太平洋、山区和印度时区格式。

【问题讨论】:

标签: c# datetime


【解决方案1】:

不幸的是,使用 .NET 2.0 时,您大部分时间都被塞满了。您需要使用 P/Invoke 创建TimeZone 类的实例。从 .NET 3.5 开始,它好多了 - TimeZoneInfo 允许您获取非本地区域。我似乎记得后者对历史时区信息也有更好的支持,而不仅仅是 DST 何时更改的一对规则。

您可以使用GetTimeZoneInformation 获取信息,但这比较难看。很可能有某种方法可以使用 P/Invoke 来为您进行转换……尽管它仍然可能很麻烦。

使用 .NET 2.0 的要求有多严格?使用 .NET 3.5 可以为自己省去很多的麻烦...

【讨论】:

    【解决方案2】:

    真的,您需要 .NET 3.5 来解决这个问题...

    (我知道您询问过 .NET 2.0,但这个答案可能对将来搜索此主题的人有帮助)

    TimeZoneInfo mountain = TimeZoneInfo.FindSystemTimeZoneById(
        "US Mountain Standard Time");
    DateTime utc = DateTime.UtcNow;
    DateTime local = TimeZoneInfo.ConvertTimeFromUtc(utc, mountain);
    

    在那之前……痛苦。您可以维护自己的偏移量列表,但您必须担心 DST。

    【讨论】:

      【解决方案3】:

      编写如下方法,调用即可轻松转换。 它是印度标准时间

      public DateTime IndianStandard(DateTime currentDate)
      {
          TimeZoneInfo mountain = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time");
          DateTime utc = currentDate;
          return TimeZoneInfo.ConvertTimeFromUtc(utc, mountain);
      }
      

      【讨论】:

        猜你喜欢
        • 2018-04-25
        • 2018-04-13
        • 2012-12-08
        • 2018-09-15
        • 1970-01-01
        • 2020-06-03
        • 2011-03-13
        • 1970-01-01
        • 2021-03-02
        相关资源
        最近更新 更多