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

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