两个日期之间的C#差异,其中一个以Z结尾?

时间:2014-05-23 22:24:11

标签: c# datetime

我有两个约会

DateTime date1Z = DateTime.Parse("2014-05-22 23:39:29Z");
DateTime date1ZKind = DateTime.SpecifyKind(DateTime.Parse("2014-05-22 23:39:29Z"), DateTimeKind.Utc);

DateTime date2 = DateTime.Parse("2014-05-22 23:39:29");
DateTime date2Kind = DateTime.SpecifyKind(DateTime.Parse("2014-05-22 23:39:29"), DateTimeKind.Utc);

Console.WriteLine(date1Z);
Console.WriteLine(date1ZKind);
Console.WriteLine(date2);
Console.WriteLine(date2Kind);

打印

23/05/2014 11:39:29 a.m.
23/05/2014 11:39:29 a.m.
22/05/2014 11:39:29 p.m.
22/05/2014 11:39:29 p.m.

有人可以解释这里发生的事情吗?

2 个答案:

答案 0 :(得分:1)

您居住在新西兰,比UTC高出+12。这符合您遇到的日期差异。如上所述,Z代表UTC。

答案 1 :(得分:1)

使用后缀" Z"是日期简写,说日期时间是"祖鲁"时间是UTC时间的另一个词。前两个日期被解析为UTC,而后两个日期被解析为所讨论的计算机上的任何时间。

所以回答你关于发生了什么的问题:后两个日期被当地时间抵消,显然是+12:00(加上12个小时),而前两个不是(因为它们被标记) as" Zulu"或UTC时间)。