我有一个返回事件的web。每个事件都发生在给定的日期,该日期被抽象为一个DateTimeOffset。现在,在服务器上,我想根据事件日期时间偏移量检查给定事件是否发生了,而不是服务器日期时间偏移量。
例如,一个事件的日期偏移量为2014-02-06 10:00:00+0300,服务器为日期偏移量2014-02-06 10:00:00+0100。如何检查事件是否已经发生?
发布于 2014-02-06 09:59:48
我相信你可以直接比较这两个DateTimeOffset。或者,您可以使用UtcDateTime属性获取DateTimeOffset的UTC值,并使用它进行比较。
示例:
var eventTime = new DateTimeOffset(2014, 2, 6, 10, 0, 0, 0, TimeSpan.FromHours(3));
var serverTime = new DateTimeOffset(2014, 2, 6, 10, 0, 0, 0, TimeSpan.FromHours(1));
var otherTime = new DateTimeOffset(2014, 2, 6, 10, 0, 0, 0, TimeSpan.FromHours(-1));
Console.WriteLine("\tLocalTime\t\t\tUtcTime\t\tInThePast");
Console.WriteLine("Server\t{0}\t{1}",serverTime, serverTime.UtcDateTime);
Console.WriteLine("Event\t{0}\t{1}\t{2}", eventTime, eventTime.UtcDateTime, eventTime < serverTime);
Console.WriteLine("Other\t{0}\t{1}\t{2}", otherTime, otherTime.UtcDateTime, otherTime < serverTime);将生产:
LocalTime UtcTime InThePast
Server 2/6/2014 10:00:00 AM +01:00 2/6/2014 9:00:00 AM
Event 2/6/2014 10:00:00 AM +03:00 2/6/2014 7:00:00 AM True
Other 2/6/2014 10:00:00 AM -01:00 2/6/2014 11:00:00 AM False发布于 2014-02-06 09:44:43
您可以使用偏移性质,它在-14小时到14小时的范围内返回一个TimeSpan对象。
有了该属性,您就可以轻松地计算事件是否已经发生。
https://stackoverflow.com/questions/21597979
复制相似问题