我們有用C#編寫的Windows Mobile應用程序(緊湊框架)。區域設置設置爲(英文)新西蘭。時區設置爲GMT + 12新西蘭。使用C#將GMT日期轉換爲本地時間時出現問題?
我們用GMT/UTC格式存儲日期。 我們有一個日期2010-02-18 18:00:00在UTC
這次在新西蘭是上午7:00。
當我們調用DateTime對象
starttime = starttime.ToLocalTime();
上我們得到了9:00。
我們做錯了什麼?
我們有用C#編寫的Windows Mobile應用程序(緊湊框架)。區域設置設置爲(英文)新西蘭。時區設置爲GMT + 12新西蘭。使用C#將GMT日期轉換爲本地時間時出現問題?
我們用GMT/UTC格式存儲日期。 我們有一個日期2010-02-18 18:00:00在UTC
這次在新西蘭是上午7:00。
當我們調用DateTime對象
starttime = starttime.ToLocalTime();
上我們得到了9:00。
我們做錯了什麼?
您是否在該日期時間指定了「kind」?事情是這樣的:
DateTime parsedStartTime = DateTime.SpecifyKind(
DateTime.Parse(starttime),
DateTimeKind.Utc);
DateTime localStartTime = parsedStartTime.DateToLocalTime();
這可能會幫助,因爲它可能不知道,你現在有日期時間是UTC的類型(很可能是不確定)。
如果這沒有幫助,也許你的一些代碼顯示你如何設置啓動時間會有所幫助。
我將DateTimeStyles.AssumeUniversal添加到我們的ParseExact方法,並且正常工作。 – Pentium10 2010-02-19 23:21:26
很高興工作! – 2010-02-19 23:25:55
您是否驗證過'starttime'確實在GMT? – 2010-02-19 22:54:38
如果您的時區是GMT + 12,應該* 18.00小時*不會導致*第二天6.00小時*? 7.00小時和9.00小時都不是*正確答案。 *(困惑......)* – Treb 2010-02-19 22:55:52
@特雷布:我猜新西蘭是在二月中旬的夏季。奇怪... – 2010-02-19 22:57:19