這次往返失敗,我懷疑由於中間時間不明確。對此有什麼可以做的嗎?它不結果相符:.NET往返時區轉換不匹配(IsAmbiguousTime問題?)
是,僅僅巧合的是,.NET挑選一個可能的模棱兩可的時間,該網站選擇了其他,那是一個我希望回來?
我認識到解決方案是以UTC存儲時間,但我正在處理遺留應用程序。
public const string EASTERN_TIMEZONEID = "Eastern Standard Time";
public const string MOUNTAIN_TIMEZONEID = "Mountain Standard Time";
[TestMethod]
public void MountainToEasternToMountain_DaylightSavings_Test()
{
DateTime originalTime = new DateTime(2011, 11, 5, 23, 59, 0); // November 5, 2011 - 11:59pm
DateTime expectedMiddle = new DateTime(2011, 11, 6, 1, 59, 0); // November 6, 2011 - 1:59am
DateTime expectedEnd = originalTime; // November 5, 2011 - 11:59pm
TimeZoneInfo easternTimeZone = TimeZoneInfo.FindSystemTimeZoneById(EASTERN_TIMEZONEID);
TimeZoneInfo mountainTimeZone = TimeZoneInfo.FindSystemTimeZoneById(MOUNTAIN_TIMEZONEID);
var middleTime = TimeZoneInfo.ConvertTime(originalTime, mountainTimeZone, easternTimeZone);
var isSourceAmbiguous = mountainTimeZone.IsAmbiguousTime(originalTime);
var isMiddleAmbiguous = easternTimeZone.IsAmbiguousTime(middleTime);
Assert.AreEqual(expectedMiddle, middleTime);
var destTime = TimeZoneInfo.ConvertTime(middleTime, easternTimeZone, mountainTimeZone);
var isMiddleSourceAmbiguous = easternTimeZone.IsAmbiguousTime(middleTime);
var isDestAmbiguous = mountainTimeZone.IsAmbiguousTime(destTime);
Assert.AreEqual(expectedEnd, destTime);
}
爲了不被輕率,但關閉DST變化時Web服務器將是一個很好的解決方法。這種含糊不清的治療方法並沒有什麼神奇的療效。 – 2012-02-24 13:28:13