我有一个应用程序,可以帮助用户预订会议(事件(。我必须为用户提供一个选择自己时区的机会,以便准确计划和更改活动日期,并显示他/她的时间表。我找到了IANA的列表,它包含了近400个时区。我应该使用什么时区来覆盖尽可能多的用户。根据我的想法,用户不必查找他/她的时区太久。
我发现一些网站使用了大约100个时区(越来越少(。
在保持时区列表较小的同时仍然覆盖整个世界确实是一个具有挑战性的问题。当然,你如何处理它完全取决于你自己。
你可以考虑的一个建议是先按国家(或地区(筛选列表。请参阅此演示,了解它在应用程序中的外观。
您可以使用我的TimeZoneNames库来实现这一点。特别地,GetTimeZonesForCountry
方法非常适合。除了国家,您还可以选择提供一个阈值日期,以筛选出该日期之前不需要的历史时区。
例如,以下内容获取了在巴西安排未来活动时所需的时区。它返回一个字典,其中键是IANA时区ID,值是要显示给用户的本地化显示名称,在本例中为巴西葡萄牙语。
var zones = TZNames.GetTimeZonesForCountry("BR", "pt-BR", DateTimeOffset.UtcNow);
输出:
键 | |
---|---|
America/Rio_Branco | HoráRio do Acre |
美国/马瑙斯 | Horário do Amazonas(马瑙斯( |
美国/Cuiab | Horário do Amazonas(Cuiabá( |
美国/巴伊亚 | Horário de Brasília(巴伊亚( |
美国/圣保罗 | Horário de Brasília(圣保罗( |
美国/诺罗尼亚 | Horário de Fernando de Noronha |
您应该找到用户使用的语言,然后找到使用该语言的人口最多的时区。然而,许多软件会按时间顺序列出它们,这是你应该做的,同时也会列出带有时区的地区。这更多的是一个基于观点的问题,但这是两种主要的方法(好吧,实际上第二种是唯一的主要方法,但第一种可能有效(