如何比较不同时区的日期时间

本文关键字:时区 日期 时间 何比较 比较 | 更新日期: 2023-09-27 17:57:43

任何比较不同时区的2个DateTimes的方法。我有一个来自服务器的DateTime,它是UTC+3:00,本地机器上的DateTime是UTC+6:00。如何比较这2个DateTime,以便DateTime 1(服务器)何时为>=DateTime 2(客户端),这样我就可以做点什么了。

第S页叶,我知道如何比较DateTimes,但当它们处于不同时区时,我不知道如何比较。

如何比较不同时区的日期时间

假设您有两个DateTime对象,它们在时间上表示相同的Instant,但在不同的时区。

DateTime dt1 = DateTime.Now.AddHours(3);
DateTime dt2 = dt1.AddHours(3);
// change kind to unspecified
dt1 = new DateTime(dt1.Ticks, DateTimeKind.Unspecified);
dt2 = new DateTime(dt2.Ticks, DateTimeKind.Unspecified);
// append the offset for each time
var offset1 = new DateTimeOffset(dt1, TimeSpan.FromHours(3));
var offset2 = new DateTimeOffset(dt2, TimeSpan.FromHours(6));
// compare
bool areEqual = offset1.Equals(offset2); // true

虽然上面的方法有效,但我强烈建议您看看NodaTime:一个.NET的替代日期和时间API,它使时区的工作更加明确和高效,并迫使您在夏令时的情况下做出明确的决定。此外,API引入了更多类型来处理不同的场景,在您的情况下,您需要使用ZonedDateTime