go - time.LoadLocation() 为美国/太平洋新时区提供未知时区
问题描述
Go version: 1.14.2
Operating system: Linux (Ubuntu)
我正在开发一个基于动态时区的系统,用户可以在其中设置时区。我有一个用户将时区设置为 US/Pecific-New。对于这个时区,golang 时间包给出以下错误:
unknown time zone US/Pacific-New
我对此进行了研究,发现时间包从具有文件路径的本地系统加载时区:
/usr/share/zoneinfo
/usr/local/go/lib/time
在这些路径上,在我的本地系统以及暂存的 Pacific-New 上,这两个位置都丢失了。
有没有办法在这些地点获得 Pacific-New?
解决方案
US/Pacific-New
从来都不是“真实”时区,不应在任何系统上选择。
它的创建是为了反映太平洋时间的潜在变化,而这种变化从未成为法律。当时的想法是在更改之前准备好一个时区。然而,由于该法案没有颁布,这被证明是一个失败的实验。TZDB 不再尝试创建区域以推测未来的变化,而只会在它们是官方的或迫在眉睫的时候添加或更新它们。
最终,US/Pacific-New
它只是一个链接US/Pacific
,然后更新为首选形式的链接America/Los_Angeles
。最后一个包含此类链接的 TZDB 版本US/Pacific-New
是 2020a。
来自 2020b 发行说明:
长期过时的文件pacificnew、 systemv 和 yearistype.sh 已从发行版中删除。(感谢 Tim Parenti。)
您可以通过在 TZDB 中搜索“Pacific-New”和“pacificnew”的文件,并阅读该NEWS
文件被pacificnew
删除之前的 2020a 版本来阅读有关此链接条目的悠久历史的更多信息。
就实际建议而言,不要US/Pacific-New
在任何系统上设置。它不再是有效的时区标识符。整个系统都会受到影响。改为America/Los_Angeles
改为。
推荐阅读
- git - Git python API在使用标签时返回无效的分支名称
- csvhelper - 当 CSVHelper 抛出错误数据时,如何判断文件在哪里出现问题?
- javascript - webpack index.js simple-wc-router 设置
- swift - iOS13 UICollectionViewFlowLayout 子类不接收collectionView框架更改
- python - 使用 RandomForest 进行 K 折交叉验证
- cookies - Chilkat HttpResponse Cookie 被截断
- c - 在没有arduino的atmega32上编程电子墨水显示器
- r - 垂直重组数据
- postgresql - PostgreSQL 如何知道我当前是否在 TimeZone 'CET' 中使用 DST?
- r - 将数据框转换为 1 和 0