php - 为什么 DateTimeZone :: listAbbreviations() 和 DateTimeZone :: listIdentifiers () 之间存在不同的时区
问题描述
我想获取所有时区的列表。
当我使用时DateTimeZone::listIdentifiers()
,我会得到一个列表,
当我使用时,DateTimeZone::listAbbreviations()
我会得到一个包含不同条目的列表。
每个列表都有不在第二个列表中的值。如何获得完整的清单?
为什么这两个功能有区别?
解决方案
标识符和缩写是不同的东西,因此您会得到不同的列表。
标识符绑定到一个位置,因此单个时区(中欧时间)通常与多个标识符(欧洲/马德里、欧洲/巴黎、欧洲/柏林...)相关,并且一个相同的标识符可以切换时区(欧洲/马德里是欧洲中部时间,UTC+1,冬季和欧洲中部夏令时间,UTC+2,夏季)。
缩写与时区绑定,因此单个缩写 (CET) 仅映射到一个时区(中欧时间,UTC+1)。
如果您检查DateTimeZone::listAbbreviations())
的输出,您会看到每个时区缩写都包含其已知位置标识符的列表,并且它们不是唯一的,因为它们中的许多会由于夏令时或政治变化而切换时区。
推荐阅读
- reactjs - 反应变量在外部事件中没有反应
- sql - QGIS 查询过滤器:使用太多 OR 运算符时为 0 个结果
- azure - Azure B2C:生成 code_challenge
- ember.js - Fabric JS Tint Filter 应用时调整图像 Ember 项目的大小
- excel - 我有一个 VBA 代码。应该如何将其转换为 VbScript 代码
- javascript - 在 php 和 js 中每 x 秒自动刷新标记
- node.js - jest.mock() 方法在传递有效的模块名称时返回 undefined
- java - 在 Java 中初始化泛型类型时什么时候需要尖括号?
- python-3.x - 使用 Pipfile 添加包会阻止任何事情
- javascript - 如何通过滚动捕捉使拖动滚动工作顺利进行