Java如何获取给定时区缩写的时区ID列表

2023-12-08

是否可以找到给定时区缩写的时区 ID 列表?例如,对于缩写IST,时区 ID 是Asia/Jerusalem, Asia/Kolkata and Europe/Dublin.


有趣的问题。由于缩写没有标准化,因此不可能有权威的答案,也没有万无一失的方法来获得这样的答案。我突然想到了两种方法:

  1. 从 JVM 获取它们。
  2. 在网上找到它们。

从 JVM 获取区域:

    String givenAbbr = "IST";
    LocalDateTime summerSouthernHemisphere = LocalDate.of(2018, Month.JANUARY, 31).atStartOfDay();
    LocalDateTime summerNorthernHemisphere = LocalDate.of(2018, Month.JULY, 31).atStartOfDay();
    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("z");
    Set<ZoneId> zones = new HashSet<>();
    for (String id : ZoneId.getAvailableZoneIds()) {
        ZoneId zone = ZoneId.of(id);
        String abbr = summerSouthernHemisphere.atZone(zone).format(dtf);
        if (abbr.equals(givenAbbr)) {
            zones.add(zone);
        }
        abbr = summerNorthernHemisphere.atZone(zone).format(dtf);
        if (abbr.equals(givenAbbr)) {
            zones.add(zone);
        }
    }
    System.out.println(zones);

这打印:

[Asia/Calcutta, Eire, Europe/Dublin, Asia/Jerusalem, Asia/Tel_Aviv, Israel, Asia/Kolkata, Asia/Colombo]

不过,其中一些只是同一时区的名称。例如,爱尔兰的规则与欧洲/都柏林相同。因此,如果需要,可以进行进一步的过滤。您可以使用oneZoneId.getRules().equals(anotherZoneId.getRules())确定是否有两个ZoneId对象具有相同的区域规则。

对于缩写 CST,该列表更长并且具有更多同义词:

[PRC, America/Matamoros, Asia/Taipei, America/Regina, America/El_Salvador,
        America/North_Dakota/New_Salem, Asia/Harbin, America/Costa_Rica,
        America/North_Dakota/Center, America/Guatemala, America/Winnipeg,
        Asia/Chongqing, America/Rankin_Inlet, America/Indiana/Knox,
        America/Belize, SystemV/CST6CDT, Mexico/General,
        America/North_Dakota/Beulah, CST6CDT, America/Swift_Current,
        America/Knox_IN, Asia/Chungking, Asia/Macao, Asia/Shanghai,
        America/Indiana/Tell_City, America/Menominee, America/Bahia_Banderas,
        America/Managua, Canada/East-Saskatchewan, Asia/Macau, America/Havana,
        America/Resolute, US/Central, US/Indiana-Starke, Cuba, America/Monterrey,
        America/Chicago, America/Merida, America/Mexico_City, Canada/Central,
        America/Tegucigalpa, America/Rainy_River, Canada/Saskatchewan, SystemV/CST6]

我的方法的一个局限性是,某些时区有多个名称,因此有多个三或四个字母的缩写。我上面的代码只捕获其中之一。

另一个限制是,像我一样选择两个日期永远不会给你过去和未来的所有可能性,甚至可能会错过一些我没有选择正确日期的地方。我尝试过选择一个北半球冬季南半球夏季的日期,以及相反的日期。这将涵盖目前的大多数情况,但你永远不知道是否有一个或三个时区的过渡不遵循我们所知的夏季和冬季。如果您想要更好的覆盖范围,这里有一些很好的建议雨果的回答.

从互联网上获取它们

当然,另一个答案是您的搜索无疑已经提出的答案:此类列表在互联网上是公开的。例如维基百科的时区缩写列表 and 时区缩写 – timeanddate.com 上的全球列表。正如所料,所提到的两个列表并不相符。例如,后者知道 ADT 的两种解释,而前者只知道一种。后一个列表给出了许多同义词缩写,从而说明了我上面的观点,即每个区域可以有多个缩写。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java如何获取给定时区缩写的时区ID列表 的相关文章

随机推荐

  • 为什么一元 * 运算符没有“操作数不得是指向 void 的指针”的约束?

    C2x 6 5 3 2 地址和间接运算符 约束 2 一元 运算符的操作数应为指针类型 为什么没有 操作数不能是指向的指针 的约束void 虽然可以从以下推论 C2x 6 5 3 2 地址和间接运算符 语义 4 The 一元 运算符表示间接
  • 用C读取YUV图像

    如何读取任何 yuv 图像 如何将 YUV 图像的尺寸传递到缓冲区以进行读取 通常 当人们谈论 YUV 时 他们谈论的是YUV 4 2 0 您参考的anyYUV 图像具有误导性 因为有多种不同的格式 并且每种格式的处理方式不同 例如 原始
  • foreach Laravel-5 <选项选择

    我尝试了很多代码变体 并试图在其他主题中找到类似的问题 所以 我有表 users 其中每个用户都有一个城市 存储为数字 当然还有带有城市 ID 和名称的表 city 有 40 个城市 当真实用户打开他的个人资料设置页面时 我希望选择他的城市
  • JavaScript 随机顺序函数

    我有以下问题 我想调用我的函数func1 func2 func3 以随机顺序 但我想确定的是every函数被调用 如果可能的话 不使用任何函数也很好 只是代码序列的随机顺序 像这样 function xy Call this sequenc
  • Java/JAXB:根据属性将 Xml 解组到特定子类

    是否可以使用 JAXB 根 据 xml 的属性将 xml 解组到特定的 Java 类
  • 如何使用 AWS Rekognition 在 Swift 3 中比较人脸

    我一直在尝试使用 AWSRekognition SDK 来比较人脸 然而 亚马逊没有关于如何将其 SDK 与 iOS 集成的文档 他们有显示如何使用识别的链接 开发者指南 仅提供 Java 示例 而且非常有限 我想知道是否有人知道如何在 S
  • 创建自定义 Windows 10 通知框

    在Windows 10中 右下角有那些灰色的通知框 当您插入 USB 安装更新或 Windows Defender 发现病毒时 它们就会出现 我的问题 我怎样才能创造这些东西 使用自定义消息 如果可能的话 可以在 vbs 或批处理中使用 因
  • 显示加载程序,直到实时链接图像未完全加载 React Native 0.58

    我从 api 接收到一个 JSON 数组 其中图像具有实时链接 因此 在成功渲染数据后 问题是我想显示 gif 直到图像完全加载 该数组是 category Loose Flower id 7 product name Drb Tls Bl
  • Spring MVC:在处理程序方法中的新浏览器窗口中打开链接

    我有一个处理链接点击的控制器 在处理程序方法中 我必须做一些事情 在数据库上 并在新窗口中打开单击的网址 类似于 blank链接中的属性 我使用 redirect url 但它当然会在同一窗口中重定向 有任何想法吗 RequestMappi
  • Java Swing UI 属性列表? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 似乎有大量的 UI 属性可以设置 UIManager put key value 是否有可以设置的所有键的列表 我找到了 Nimbus 外观中使用的
  • 如何选择两列来用数据框绘制?

    apple是一个dataframe 其数据结构如下 apple Date Open High Low Close Adj Close 0 2017 01 03 115 800003 116 330002 114 760002 116 150
  • R中rbind()和bind_rows()之间的区别

    在网络上 我发现rbind 用于按行组合两个数据帧 并且执行相同的任务bind rows 函数来自dplyr 这两种功能有什么区别 哪一种更有效 除了一些差异之外 使用的主要原因之一bind rows over rbind是组合两个具有不同
  • 在 Fortran2003 中,一维假定形状数组可以与 C 互操作吗?

    在 Fortran 2003 中 可分配数组为not与 C 互操作 我认为这与存储在内存中的附加数组信息有关 这可能会干扰 C 解释 但是 如果我将虚拟参数声明为一维假定形状数组怎么办 例如 subroutine outter subrou
  • 如何在Android中的绘画应用程序中实现撤消功能?

    我想在我的应用程序中执行撤消功能 为此 我进行了搜索 发现采用 x y 点的数组列表 我在下面的代码中完成了这些操作 但我无法撤消绘图 public Drawview Context context float x float y int
  • Tkinter:如何检查使用一个函数单击了哪个按钮?

    我一直在搞 Tkinter 并想出了这个 from tkinter import root Tk def red color change color label configure fg red def blue color change
  • 多个 pandas 列上的布尔索引[重复]

    这个问题在这里已经有答案了 尽管至少有two good有关如何在 Python 中索引 DataFrame 的教程pandas图书馆 我仍然无法找到一种优雅的方式SELECTing 超过一列 gt gt gt d pd DataFrame
  • Android picasso,错误原因

    如何获取 picasso 中的错误描述 Picasso with context load getUrl placeholder R drawable user thumbnail big error android R drawable
  • GWT 2.6 安装问题

    我刚刚安装了 GWT 2 6 现在收到错误 描述资源路径位置类型 文件 war WEB INF lib gwt servlet jar 与 GWT SDK 库 gwt servlet jar 的大小不同 也许这是一个不同的版本 gwt se
  • Google Oauth2 给出“invalid_request”响应以获取访问令牌和刷新令牌

    如何获取 XMPP 的 google 身份验证的访问令牌和刷新令牌 我成功获得了授权代码 但现在我需要获取访问令牌和刷新令牌 但是当我使用下面的代码在 Android 中执行请求时 我得到了响应 错误 无效请求 HttpPost reque
  • Java如何获取给定时区缩写的时区ID列表

    是否可以找到给定时区缩写的时区 ID 列表 例如 对于缩写IST 时区 ID 是Asia Jerusalem Asia Kolkata and Europe Dublin 有趣的问题 由于缩写没有标准化 因此不可能有权威的答案 也没有万无一