Calendar for specific TimeZone does not showing daylight savings in android and java
我不能得到一个特定时区的准确时间,例如"EST",通常是格林尼治标准时间5,但现在它遵循的是日光节约,即格林尼治标准时间4。但是在Java和Android中都显示了1小时的差异(只需要GMT-5,而不是GMT-4)。但在点网中,它显示正确。我的问题与如何在Java中使用时区解决夏时制一样但我只能使用较短的时区形式,例如("est"、"ist")。请您提出一些建议,根据特定的短格式时区(如"est")获得准确的时间。
谢谢您。
没有完美的答案,因为你基本上得到了不完整的信息。但是,这里有一些代码来查找所有支持的时区,这些时区使用缩写"est"(在非夏令时,在美国地区):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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。我没试过。)