c#用时区解析日期时间

时间:2018-06-01 08:05:34

标签: c# .net parsing

我们如何用时区解析日期时间。

<TIMESTAMP_UTC>20180523160000</TIMESTAMP_UTC>
<TIMEZONE>UTC+8</TIMEZONE>

这应该转换为2018-05-24 00:00:00。 我尝试了几件事,但没有成功。 我尝试了下面的命令,但它抛出了一个错误。

DateTime.ParseExact("20180523160000+08:00", "yyyyMMddHHmmssZhhmm", System.Globalization.CultureInfo.InvariantCulture)

你知道我们如何使用DateTime Parse方法解析它。

3 个答案:

答案 0 :(得分:2)

您需要使用DateTimeOffset.ParExact

var date = DateTimeOffset.ParseExact("20180523160000+08:00", "yyyyMMddHHmmsszzz", CultureInfo.InvariantCulture);

答案 1 :(得分:1)

尝试使用DateTimeOffset.Parse()代替DateTime.Parse()作为DateTimeOffset存储时区信息。

有关详细信息,请参阅以下MSDN链接:

https://msdn.microsoft.com/en-us/library/bb351654(v=vs.110).aspx

答案 2 :(得分:1)

您可以反转时区的符号,然后使用

进行解析
var dateTime = DateTime.ParseExact(
    "20180523160000UTC-8",
    "yyyyMMddHHmmssUTCz",
    CultureInfo.InvariantCulture);

但如果这是一个好方法可能会有问题。