當我更改我的計算機上的時區(在模擬器上測試時)或手機上(直接在手機上測試時)時,DateTime.ToLocalTime()
不會返回更新結果。當更改時區時,MonoTouch DateTime.ToLocalTime不會更新
我註冊併成功收到UIApplication.Notifications.ObserveSignificantTimeChange
的通知事件。在這裏,我打電話TimeZoneInfo.ClearCachedData()
,它允許我檢測時區實際上已更改,但這對ToLocalTime()
沒有影響。我轉換的DateTime
絕對是友善的Utc(例如試用DateTime.UtcNow
)。
我試過打電話CultureInfo.CurrentCulture.ClearCachedData()
在這個問題中建議:SetTimeZoneInformation does not update DateTime.Now for another .NET Application。這隻會導致應用程序在CurrentCulture
爲零時崩潰。
深入研究ToLocalTime()
的實施,它似乎使用對象TimeZone.CurrentTimeZone
。只有在DateTime.GetNow()
和TimeZone.timezone_check
之間的差異時纔會重置此對象。我懷疑TimeZone.timezone_check
在調用TimeZoneInfo.ClearCachedData()
時沒有更新。
有什麼辦法可以強制ToLocalTime()
考慮到時區變化?
很好的建議,但我遇到了同樣的問題。調用'DateTimeOffset.ToLocalTime()'仍然使用'TimeZone.CurrentTimeZone',它似乎沒有得到更新。 – ysalmi
我得看看我自己的實現。這一個正在爲我工作。箍回到這個。 – Jacco
感謝您的幫助。我覺得我失去了一些東西。我嘗試了'TimeZoneInfo.ConvertTimeFromUtc(myUTCDate,TimeZoneInfo.Local)',它使用最新的TimeZoneInfo,但是當我打印出結果時,我仍然得到錯誤的本地時間。 – ysalmi