在英國的時鐘改變了25/10/2015.NET DateTime.ToLocalTime是否跨DST更改持續存在?
如果我在24/10/2015跑到下面的代碼,並再次在26/10/2015,將相同的輸出產生?
從我的日期時間的東西如何在C#我假設是的,但我想仔細檢查,因爲它是我的應用程序的關鍵知識。
// January date outside of DST
var januaryDate = new DateTime(2015, 1, 1, 0, 0, 0, DateTimeKind.Utc);
Console.WriteLine(januaryDate.ToLocalTime().ToString());
// April date inside DST
var aprilDate = new DateTime(2015, 4, 1, 0, 0, 0, DateTimeKind.Utc);
Console.WriteLine(aprilDate.ToLocalTime().ToString());
當地時間意味着無論你*當前時區*爲。即使是同一臺機器上的不同用戶也可能使用不同的時區。如果您關心偏移量,請使用DateTimeOffset,而不是DateTime。如果這是關鍵的(因爲它是例如在航空旅行),檢查NodaTime以及 - 它包含了最新IANA時區數據庫,這樣你就不必猜測,BST手段(巴西或英國),或什麼是正確的達拉斯 –
偏移@ PanagiotisKanavos謝謝,但不幸的是卡住了DateTime類型。假設這個問題,它是同一臺機器上的同一個用戶。 –
那你就麻煩了。至少,指定日期類型(即本地或UTC),因爲現在它是未指定的並且被視爲UTC。 'ToLocalTime()'在我的機器上應用了一個2小時的偏移量,它是'+2:00'。猜猜這也回答你的問題,但也顯示你爲什麼有麻煩。除非你做** **一定的偏移量還是那種被存儲在您的日期(即數據庫,文件等)和妥善處理之前設置,你可以有意想不到的效果 –