2014-02-06 31 views
1

我有一個web api返回事件。每個事件發生在一個給定的日期,它被抽象爲DateTimeOffset。現在在服務器上,我想根據事件datetimeoffset檢查給定事件是否發生了,而不是服務器datetimeoffset獲取DateTimeOffset另一個DateTimeOffset

例如一個事件有datetimeoffset 2014-02-06 10:00:00 + 0300,服務器是datetimeoffset 2014-02-06 10:00:00 + 0100。我如何檢查事件是否已經發生?

+0

關於該事件的時間轉換爲UTC,並用'DateTime.UtcNow'比較什麼? – CodesInChaos

回答

0

您可以使用Offset Property,它在-14小時至14小時的範圍內返回TimeSpan object

擁有該屬性,您可以輕鬆計算事件是否已經發生。

1

我相信你可以直接比較兩個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