我的代码是否准确地解释了这个日期时间字符串?

时间:2018-02-26 19:51:24

标签: c# datetime timezone

我从api收到以下字符串:

{ "CallTime" : "2018-02-23T16:00:01.806Z" }

在我的数据库中,我想在祖鲁时间存储所有日期/时间。为此,我使用DateTime.Parse将此字符串转换为DateTime对象。然后,我使用ToUniversalTime()将时间更改为zulu时间(然后我将其存储在数据库中)。

但是,我不确定我是否正确理解时区的解释。如果我看一下结果,这就让我感到困惑:

DateTime.Parse("2018-02-23T16:00:01.806Z") /* = 2/23/2018 10:00:01 AM */
DateTime.Parse("2018-02-23T16:00:01.806Z").ToUniversalTime() /* = 2/23/2018 4:00:01 PM */

原始字符串是否已经在zulu时间?我认为这两个值应该是相同的。原始字符串中没有时区的指示,因此Parse函数不会自动假设zulu时间吗?或者,Parse是否使用本地系统时区并使用它将字符串转换为对象?

1 个答案:

答案 0 :(得分:1)

正确的答案是:是的。

正如许多评论指出的那样,DateTime.Parse()默认使用DateTimeKind.Local-> 2/23/2018 10:00:01 AM 当您致电ToUniversalTime()时,您再次获得UTC时间 - > 4PM