2016-07-18 39 views
-3

任何方式比较来自不同时区的2个日期时间。我有1个来自服务器的日期时间UTC + 3:00和本地计算机上的UTC + 6:00。如何比较这2个日期时间,所以当DateTime 1(服务器)将> = DateTime 2(客户端),所以我可以做点什么。如何比较来自不同时区的日期时间

P.S 咋,我知道如何比较日期时间,但我不知道如何做到这一点,当他们在不同的时区。

+0

最简单的方法是使用UTC时间。那么没有时区hooplah来处理。 –

+1

很多关于此主题的现有问题。显示你的研究和你已经尝试过的请。如果您还没有做过任何调查,请在提问前提出。 –

+0

你能否加入[SSCCE](http://sscce.org/)?对于各种不同的框架有各种不同的时区解决方案,并且SSCCE将帮助 –

回答

1

假设您有两个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:另一种日期和时间的API,使得与时区确实更加明确,高效和部队合作.NET你做出显式的决定DST案例。此外,API引入了更多类型来处理不同的场景,在您的情况下,您需要使用ZonedDateTime