【问题标题】:DateTime.ParseExact - iso8601 with time zone offsetDateTime.ParseExact - 带时区偏移量的 iso8601
【发布时间】:2013-12-12 07:33:12
【问题描述】:

我尝试将字符串日期转换为日期时间。我知道我的字符串是 ISO8601 格式,带有偏移时区。

我试试这个:

DateTime date = DateTime.ParseExact(strDate,"yyyy-MM-dd'T'HH:mm:sszzz", CultureInfo.InvariantCulture);

但并非在所有情况下都有效。

它适用于负偏移量:2013-12-11T14:36:00-01:00

它不起作用(捕获异常)正偏移量:2013-12-11T14:36:00+01:00

我是否以正确的方式使用 DateTime.ParseExact?

感谢您的帮助。

【问题讨论】:

标签: c# datetime iso8601


【解决方案1】:

您提供的字符串适用于我,没有任何格式规范。

        DateTime d = DateTime.Parse("2013-12-11T14:36:00+01:00");
        Debug.Print(d.ToString());
        Debug.Print(d.ToUniversalTime().ToString());

你看,在后面的 Print 中,它打印负 1 小时,正如你指定的 + 1 小时时区。

【讨论】:

    【解决方案2】:

    啊,我没有对我的 char '+' 进行 url 编码......:S

    它被 REST Web 服务使用,所以当我发送 2013-12-11T14:36:00%2B01:00 时,它可以工作..!

    【讨论】:

      猜你喜欢
      • 2017-10-04
      • 1970-01-01
      • 2011-09-02
      • 2020-07-30
      • 2013-08-10
      • 2011-12-11
      • 2011-08-04
      • 1970-01-01
      • 2013-09-29
      相关资源
      最近更新 更多