我无法获得特定时区的准确时间,例如一般为GMT-5的“EST”,但现在它遵循GMT-4的夏令时。但是在java和android中都显示了1小时的差异(它只需要GMT-5,而不是GMT-4)。但在dot网中,它显示正确。 我的问题与How to tackle daylight savings using Timezone in java相同 但我只能使用简短形式的TimeZone,如(“EST”,“IST”)。请你给出一些建议,以便根据特定的短时区(如“EST”......)获得准确的时间。
谢谢。
答案 0 :(得分:2)
对此没有完美的答案,因为你基本上得到的信息不完整。但是,这里有一些代码可以找到所有支持的时区,使用缩写“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。我没有尝试过。)