1

我无法获得特定时区的准确时间,例如“EST”,通常是 GMT-5,但现在它遵循夏令时,即 GMT-4。但在 java 和 android 中都显示了 1 小时的差异(它只需要 GMT-5,而不是 GMT-4)。但在点网中它显示正确。我的问题与如何在 java 中使用 Timezone 处理夏令时相同 但我只能使用 TimeZone 的短形式,例如(“EST”、“IST”)。请您提供一些建议以根据特定的短格式时区获得准确的时间(如“EST”......)

谢谢你。

4

1 回答 1

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

于 2012-05-27T08:27:41.107 回答