比较日期时间忽略时区
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
我有来自不同时区的时间戳,我想比较来自不同时区的时间忽略时区 信息。基本上,在我的例子中,一个时区的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