特定TimeZone的日历不显示android和java中的夏令时

时间:2012-05-27 08:07:36

标签: java android timezone dst

我无法获得特定时区的准确时间,例如一般为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”......)获得准确的时间。

谢谢。

1 个答案:

答案 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。我没有尝试过。)