是否可以通过Java中的Locale列出可用的TimeZones?

我需要生成一个为用户显示的时区列表。 我们想根据用户的Locale缩小列表范围。

如果用户的区域设置为“en_US”,他可能并不关心列表中的“Asia / Ashkhabad”。

这可行吗?

不,你不能。 您可以使用TimeZone.getAvailableIDs(int rawoffset)来缩小结果范围,但是您需要保留Locale-> raw offset的映射。

此外,如果您的用户是位于印度的美国人,会发生什么? 你不想为他显示Banglor时区吗?

当然它是可行的…但你必须编写一些代码。

您必须使用过滤时区列表的代码来选择您的时区。 您将使用区域设置地图将该filter填充到区域设置的时区集合中。

但是,正如David所说,你将面临Locale不是他们的工作地点或时区的人的问题,所以要准备以两层方式处理这个问题,或者从某个地方获取“虚拟语言环境”。

您可能会发现这对实现您想要执行的操作很有用。