我的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