任何比较来自不同时区的2个日期时间的方法。我有1个DateTime来自服务器它的UTC + 3:00和本地机器上的DateTime是UTC + 6:00。如何比较那2个DateTimes所以当DateTime 1(服务器)将是> = DateTime 2(客户端)所以我可以做点什么。
P.S 是的,我知道如何比较DateTimes,但是当他们处于不同的时区时,我不知道如何做到这一点。
答案 0 :(得分:2)
假设您有两个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,它使得使用Timezones更加明确和高效,并迫使您做出明确的决定DST的案例。此外,API引入了更多类型来处理不同的场景,在您需要使用ZonedDateTime