比较日期时间忽略时区

Compare datetimes ignoring time zone

我有来自不同时区的时间戳,我想比较来自不同时区的时间忽略时区 信息。基本上,在我的例子中,一个时区9AM应该等于另一个时区9AM。我应该如何以最自然的方式在 C# 中执行此操作?

var dt1 = DateTime.Parse("2022-01-17T18:59:43.0030684+06:00");
var dt2 = DateTime.Parse("2022-01-17T18:59:43.0030684+03:00");

Console.WriteLine(DateTime.Compare(dt1, dt2));

它 returns -1 现在,我想要 returns 0.

试试这个:

var dt1 = DateTimeOffset.Parse("2022-01-17T18:59:43.0030684+06:00");
var dt2 = DateTimeOffset.Parse("2022-01-17T18:59:43.0030684+03:00");
Console.WriteLine(DateTime.Compare(dt1.DateTime, dt2.DateTime));

从技术上讲,您可以使用 DateTimeOffset 而不是 DateTime 来补偿(即添加)时区差异:

代码:

var dt1 = DateTimeOffset.Parse("2022-01-17T18:59:43.0030684+06:00");
var dt2 = DateTimeOffset.Parse("2022-01-17T18:59:43.0030684+03:00");

Console.WriteLine(DateTimeOffset.Compare(dt1 + dt1.Offset, dt2 + dt2.Offset));

结果: (fiddle)

0