美国的每个时区都有默认时区ID吗?

时间:2018-02-15 16:45:37

标签: java timezone

我目前正在开发一个需要拉动时区的项目修复,但它不再是3个字母的缩写。这是美国/芝加哥(对我来说),但我需要知道,似乎无法找到美国每个时区的默认时区ID。

3 个答案:

答案 0 :(得分:3)

this list中查找标有“规范”的内容。

简单的答案是没有“默认”。如果您拥有的是三个字母的时区ID,则应选择最适合您应用的Olsen ID。

答案 1 :(得分:1)

鉴于您使用了标记java,我认为您正在寻找基于Java的解决方案:

import java.util.Arrays;
import java.util.TimeZone;

public class PrintTimeZones {
    public final static void main(String[] args) {
        String[] tz = TimeZone.getAvailableIDs();
        Arrays.stream(tz)
            .filter(elem -> elem.startsWith("US/"))
            .forEach(System.out::println);
    }
}

这将打印仅限美国的时区。您可以将过滤器更改为startsWith("America/"),这将返回更多结果(包括南美洲,墨西哥和Kanada)。

答案 2 :(得分:1)

如果您正在寻找50个美国当前主要IANA / Olson时区标识符的简化列表,那么(截至2018年2月撰写)将如下:

  

America/New_York - 东部时间
  America/Chicago - 中部时间
  America/Denver - 山区时间(亚利桑那州大部分地区除外)
  America/Phoenix - 山区时间(亚利桑那州大部分地区)
  America/Los_Angeles - 太平洋时间
  America/Anchorage - 阿拉斯加大部分地区   America/Adak - 阿拉斯加 - 阿留申群岛   Pacific/Honolulu - 夏威夷

当然,也有许多美国领土不在此列表中。另外请记住,即使美国时区也随着时间的推移而发生变化,因此如果您想要历史准确性,还应该使用许多其他的America/Indiana/Indianapolis