2012-12-28 76 views
1

我試圖將時間從UTC轉換爲手機的本地時間。爲此,我使用以下內容:WP7 TimeZoneInfo.ConvertTime沒有給出正確的結果

if (progress.ActionDateTime.HasValue) 
        progress.ActionDateTime = TimeZoneInfo.ConvertTime(progress.ActionDateTime.Value, TimeZoneInfo.Local); 

但是,轉換髮生後的時間仍然完全相同。這種方法在WP7中工作嗎?

+0

試試這個。 progress.ActionDateTime.ToLocalTime(); – Mahantesh

+0

這似乎工作,我不知道如果我只是沒有正確使用ConvertTime功能,或者它不工作。 – Paul

回答

2

DateTime不存儲有關時區的信息。 According to the documentationTimeZoneInfo.ConvertTime將使用DateTime.Kind屬性來確定時間應該如何轉換:

  • DateTimeKind.Local和DateTimeKind.Unspecified:本地時間轉換爲在destinationTimeZone的時間。
  • DateTimeKind.Utc:將協調世界時(UTC)轉換爲destinationTimeZone中的時間。

因爲您正在使用TimeZoneInfo.Local作爲第二個參數(它指定目標時區),所以我假設您是DateTimeKind是Local或Unspecified。因此,您將本地日期轉換爲本地日期,這顯然不起作用。

DateTime.ToLocalTime也使用DateTimeKind。 According to the documentation:

  • Utc:此DateTime實例已轉換爲本地時間。
  • 本地:不執行轉換。
  • 未指定:此DateTime實例假定爲UTC時間,並且轉換的執行方式類似Kind爲Utc。

基本上,而TimeZoneInfo.ConvertTime認爲DateTimeKind.Unspecified =本地,DateTime.ToLocalTime認爲DateTimeKind.Unspecified = UTC。它解釋了爲什麼後者工作而前者不工作。

相關問題