我每天在給定時鐘時間運行一個進程(在美國 - 這很重要)。我一直在試圖計算如何在25小時內正確地做到這一點。考慮以下C#代碼:我如何檢測夏令時25小時日期
var referenceDate = new DateTime(2012, 11, 3);
var referenceTime = new TimeSpan(0, 19, 30, 0);
var originalTime = referenceDate.Add(referenceTime);
var tomorrow = referenceDate.AddDays(1);
var nextTimestamp = string.Format(
"{0} {1:00}:{2:00}",
tomorrow.ToShortDateString(),
referenceTime.Hours,
referenceTime.Minutes);
var nextRunTimestamp = DateTime.Parse(nextTimestamp);
我使用格式/解析序列來確保我們可以避免跨越DST過渡時間的時間跨度。現在應該是以下表達式的結果?
nextRunTimestamp.Subtract(originalTime).TotalHours
哦,原來是24,但我認爲它應該是25,因爲2012年11月4日是一個25小時的一天(上午2點轉換)等11月3日19:30之間的區別11月4日19:30應該是25個小時。
如何在一年中的每個日期找到正確答案?
你可以使用UST呢?它沒有DLST,因此「univsersal」。 – Hardrada
必須有一個直接的方法來安排一個任務的時間。可以設置備份碎片整理一段時間。計時器似乎並不是正確的工具。如果你的服務失敗了怎麼辦? – Paparazzi
你可以很容易地使它與原來的方法一起工作,你只需要一個常量引用:'var hours = nextRunTimestamp.ToUniversalTime()。Subtract(originalTime.ToUniversalTime())。Tota lHours;'That's 25. –