我的Xamarin格式的iOS和Android是大量使用設備的時間和需要設置使用不同的時間在其他國家。Xamarin格式:安全使用時區列出使用GetSystemTimeZones
我做了搜索,發現此列出所有可用的時區:
foreach (TimeZoneInfo z in TimeZoneInfo.GetSystemTimeZones())
Console.WriteLine(z.Id);
我的方案,用戶可以選擇任何網站,並設置正確的時區基礎上,他們的網站是這樣的時間將顯示相對於他們選擇的網站。
我運行了代碼並且至少使用了所有可用的時區。看起來像iOS和Android有不同的時區標識。我認爲是因爲不同的系統。
我只是擔心時區編號沒有完全列出因爲我們的應用程序在國際上運行,實際上大多數應用程序在國際上運行。
var utcTime = DateTime.UtcNow;
var zone = TimeZoneInfo.FindSystemTimeZoneById("Hongkong");
var zoneTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, zone);
System.Diagnostics.Debug.WriteLine("Device Timezone : " + DateTime.Now + " " + TimeZone.CurrentTimeZone.StandardName);
System.Diagnostics.Debug.WriteLine("Hong Kong Time : " + zoneTime.ToString("G"));
另一個注意事項:上面的代碼是否也照顧到了節電?例如在新西蘭,每年新西蘭不得不將時間推移或背景時間縮短一小時,而其他國家則不然。
你可能想看'野田時間'(http://nodatime.org),你也應該閱讀https://stackoverflow.com/a/2532962/4984832 – SushiHangover
如果你使用上面的代碼,你會解釋這個問題嗎?而不是你提出的nodatime?在我的iOS上,我將日期更改回到五月,這會返回一小時並顯示時間,時間返回是正確的,例如10月(現在):10點nz時間和5點hk時間。 5月,10:00 nz時間和6:00 – LittleFunny
目前還不清楚你如何使用UTC時間與本地TZ轉換時間(現在在你的問題中使用,在你的評論中使用的是前一個UTC時間),而時區不是與偏移相同。如果您正在計劃「本地」事件,請使用本地時間,其中包括偏移量vs.UTC時間,因爲差異取決於將來何時發生,並且將UTC轉換回本地時間會導致與原始請求不同的本地時間。閱讀鏈接的SO回答和評論,因爲它涵蓋了這些主題。 (我建議審查野田,因爲它消除了這種困惑)。 – SushiHangover