我認爲你需要時刻計算您的正常運行跳過這些把戲使用DateTimeOffset
和TimeZoneInfo
。這article可以幫助你,特別是第比較和算術運算與DateTimeOffset值第二個代碼段。
您可以在該代碼中看到他們在夏令時期爲DateTimeOffset實例添加了小時,並且結果考慮了時間變化。
編輯:下面的代碼從上述文章所(代碼沒有做你想做的,但表明,隨着TimeZoneInfo
使用DateTimeOffset
正在考慮夏令時:
public static void Main()
{
DateTime generalTime = new DateTime(2008, 3, 9, 1, 30, 0);
const string tzName = "Central Standard Time";
TimeSpan twoAndAHalfHours = new TimeSpan(2, 30, 0);
// Instantiate DateTimeOffset value to have correct CST offset
try
{
DateTimeOffset centralTime1 = new DateTimeOffset(generalTime,
TimeZoneInfo.FindSystemTimeZoneById(tzName).GetUtcOffset(generalTime));
// Add two and a half hours
DateTimeOffset centralTime2 = centralTime1.Add(twoAndAHalfHours);
// Display result
Console.WriteLine("{0} + {1} hours = {2}", centralTime1,
twoAndAHalfHours.ToString(),
centralTime2);
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine("Unable to retrieve Central Standard Time zone information.");
}
}
// The example displays the following output to the console:
// 3/9/2008 1:30:00 AM -06:00 + 02:30:00 hours = 3/9/2008 4:00:00 AM -06:00
我認爲你過於複雜的事情。爲什麼不KISS,只是基於UTC天? – Joe 2013-04-05 21:04:30
這是用於監控託管網站的網站統計信息。我們需要能夠承諾99。9%的正常運行時間 – berkeleybross 2013-04-05 21:08:10