2010-02-19 106 views
0

我們有用C#編寫的Windows Mobile應用程序(緊湊框架)。區域設置設置爲(英文)新西蘭。時區設置爲GMT + 12新西蘭。使用C#將GMT日期轉換爲本地時間時出現問題?

我們用GMT/UTC格式存儲日期。 我們有一個日期2010-02-18 18:00:00在UTC

這次在新西蘭是上午7:00。

當我們調用DateTime對象

starttime = starttime.ToLocalTime(); 

上我們得到了9:00。
我們做錯了什麼?

+0

您是否驗證過'starttime'確實在GMT? – 2010-02-19 22:54:38

+0

如果您的時區是GMT + 12,應該* 18.00小時*不會導致*第二天6.00小時*? 7.00小時和9.00小時都不是*正確答案。 *(困惑......)* – Treb 2010-02-19 22:55:52

+0

@特雷布:我猜新西蘭是在二月中旬的夏季。奇怪... – 2010-02-19 22:57:19

回答

3

您是否在該日期時間指定了「kind」?事情是這樣的:

DateTime parsedStartTime = DateTime.SpecifyKind(
    DateTime.Parse(starttime), 
    DateTimeKind.Utc); 

DateTime localStartTime = parsedStartTime.DateToLocalTime(); 

這可能會幫助,因爲它可能不知道,你現在有日期時間是UTC的類型(很可能是不確定)。

如果這沒有幫助,也許你的一些代碼顯示你如何設置啓動時間會有所幫助。

+0

我將DateTimeStyles.AssumeUniversal添加到我們的ParseExact方法,並且正常工作。 – Pentium10 2010-02-19 23:21:26

+0

很高興工作! – 2010-02-19 23:25:55

相關問題