没有完美的答案,因为你基本上得到了不完整的信息。然而,这里的一些代码,找出所有支持的时候,其使用缩写“EST”区(非夏令时,在美国地区):
import java.util.*;
public class Test {
public static void main(String[] args) {
for (TimeZone zone : getMatchingTimeZones("EST")) {
System.out.println(zone.getID());
}
}
public static List<TimeZone> getMatchingTimeZones(String target) {
List<TimeZone> list = new ArrayList<TimeZone>();
for (String id : TimeZone.getAvailableIDs()) {
TimeZone zone = TimeZone.getTimeZone(id);
String actual = zone.getDisplayName(false, TimeZone.SHORT, Locale.US);
if (actual.equals(target)) {
list.add(zone);
}
}
return list;
}
}
你如何从该列表中得到实际你想要的时区取决于你。 (另外我不知道这是否可以在Android上运行,我还没试过)
IMO你提到的答案相当清楚 - 你试图实现的是不可能的。 – home
“EST”不遵循夏令时。 “东部时间”确实如此 - 但这就是EST,成为美国东部时间。 EST的“S”是“标准”,即“没有夏令时”。 –
这些3-4字母缩写不是实时区域,不是标准化的,甚至不是唯一的(!)。试图与这些工作将导致痛苦和痛苦;避免它们。通常使用[UTC](https://en.wikipedia.org/wiki/Coordinated_Universal_Time)中的值,并在[适当的时区名称](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)大陆/地区'格式。 –