问题标签 [zoneinfo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 检测 ZONEINFO 在 Go 中是否失败
在 Go 中,您可以通过添加指向您要用于时区信息的特定文件的 ZONEINFO 环境变量来指定要使用的特定 zoneinfo.zip 文件。这很棒,因为它允许我确保我在前端和后端使用的 IANA 时区数据库的版本是相同的。
但是,似乎没有任何方法可以检测指定区域信息文件的使用是否失败。查看源代码(https://golang.org/src/time/zoneinfo.go),看起来使用指定文件的任何错误都会安静地失败,然后 go 将继续检查默认操作系统位置或默认 $ GOROOT 位置从那里提取时区信息。这不是我想要的行为,因为我想确定我正在使用我指定的区域信息版本。
我在解决方案方面考虑了以下内容,但我对其中任何一个都不满意。
- 我可以检查自己是否设置了环境变量,但这充其量只是一个部分解决方案,因为它没有告诉我文件是否真的可以被 LoadLocation 使用。
- 我可以确保不存在任何区域信息的备份位置。这似乎有点极端,意味着我必须非常小心代码在开发和生产设置中运行的环境。
有谁知道一种更优雅的方法来确保我使用由我的 ZONEINFO 环境变量指定的 zoneinfo.zip 文件?
更新:为了解决这个问题,我也从下面@chuckx 的答案中获得灵感,并整理了一个 Go 包,该包可以从使用哪个时区数据库中进行猜测工作。自述文件中包含有关如何使用 Go 安装获取正确版本的时区数据库的说明。
linux - 如何设置半小时和 45 分钟的时区而不用担心 Linux 中 DST 的变化?
目前我通过链接/etc/localtime
到我的 Linux CentOS 7 机器上设置时区 GMT+5/usr/share/zoneinfo/Etc/GMT-5.
例如,我想创建一个区域信息文件/usr/share/zoneinfo/Etc/GMT-5:30
,使我能够将当前时区设置为 GMT+5:30 ,而不必担心 DST 更改。
我知道我可以链接/etc/localtime
到/usr/share/zoneinfo/Asia/Kolkata
例如,但我将不得不担心 DST 更改,即使它可能不会同时实施。
我也知道,TZ=GMT+5:30; export $TZ
但我担心这种方法将来会因某种原因适得其反。
go - Go 在 docker 容器中找不到 /usr/share/zoneinfo
在我调用的 Go 程序中time.LoadLocation("Europe/Berlin")
,它返回一条错误消息open /usr/local/go/lib/time/zoneinfo.zip: no such file or directory
,即使在容器中(alpine:3.9
安装了 tzdata 运行)/usr/share/zoneinfo/Europe/Berlin
存在,并且根据文档,它应该优先于 zip 文件。相同的程序在我的机器(Arch Linux)上找到该文件。可执行文件在我的机器上静态链接,然后复制到容器中。我尝试了 Go 1.11.5 和 1.10.3。
我构建了可执行文件:
我正在寻找任何可以帮助我识别问题的想法。
mysql - 数据库中的时区错误
我已经在 phpmyadmin 中使用 CURRENT_TIMESTAMP 函数进行了约会。并且小时的输出值错了1小时。我已经尝试在 mysql 中使用
SET TIME_ZONE = '+01:00';
但是它仍然会提前 1 小时提交日期。有什么建议么?
timezone - Debian Stable for Casablanca 上的 TZ 数据库忽略了对 DST 的永久更改并添加了偏移量 1
我在 Debian Stable 9 (stretch) 上,新更新的非洲/卡萨布兰卡 TZ 数据库表当前状态为 isdst=0,与 UTC 的偏移量为 +01。来自摩洛哥的夏令时 Wiki 页面
https://en.wikipedia.org/wiki/Daylight_saving_time_in_Morocco
很明显,从 2018 年 10 月起添加了 UTC +1:00 的永久偏移量,现在永久遵守夏令时。
但在斋月期间,偏移量传统上被重置为 UTC 00:00。但是 TZ 数据库表示他们添加了 +01 的偏移量,并且 isdst 设置为 1。
此问题仅适用于非洲/卡萨布兰卡。
这似乎是 Debian Stable 的问题。感谢您提供有关解决此问题的任何建议
zdump -v /usr/share/zoneinfo/Africa/Casablanca | 2019 年
/usr/share/zoneinfo/Africa/Casablanca 2019 年 5 月 5 日星期日 01:59:59 UT = 2019 年 5 月 5 日星期日 02:59:59 +01 isdst=0 gmtoff=3600
/usr/share/zoneinfo/Africa/Casablanca 2019 年 5 月 5 日星期日 02:00:00 UT = 2019 年 5 月 5 日星期日 02:00:00 +00 isdst=1 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca 2019 年 6 月 9 日星期日 01:59:59 UT = 2019 年 6 月 9 日星期日 01:59:59 +00 isdst=1 gmtoff=0
/usr/share/zoneinfo/Africa/Casablanca 2019 年 6 月 9 日星期日 02:00:00 UT = 2019 年 6 月 9 日星期日 03:00:00 +01 isdst=0 gmtoff=3600
mysql - mysql_tzinfo_to_sql - 在加载时区表和其他问题后更新它们
我只是使用 mysql_tzinfo_to_sql 将 zoneinfo 数据库加载到 mysql 中。他们都进口得很好。
我有一些我似乎无法找到答案的问题:
- 名称是否与 PHP 中使用的名称
time_zone_name
相同?我假设 PHP 使用相同的/usr/share/zoneinfo
信息,所以名称也会相同,对吧? - 它提到当时区数据发生变化时,需要不时地重新填充表。这是通过
yum
更新更新 tzdata 的时候吗?是tzdata
我的/usr/share/zoneinfo
信息吗? - 如果上述情况属实,则 tzdata 会更新,我需要重新填充我的表......我该怎么做?我可以再跑
[root@db ~]# mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
一次吗?该命令会覆盖当前存在的信息,还是我需要在这样做之前手动删除所有表条目?
感谢您提供有关上述内容的任何信息。到目前为止,PHP 中使用的时区名称似乎匹配,但除了一些测试之外,我还没有进一步研究它。至于最后两个......我只是想领先一步,所以如果/当表格需要更新时,我没有麻烦。
python - 在 Windows 上获取本地时区名称(Python 3.9 zoneinfo)
查看zoneinfo
Python 3.9 中的模块,我想知道它是否还提供了一个方便的选项来检索 Windows 上的本地时区(操作系统设置)。
在 GNU/Linux 上,你可以做
但在 Windows 上,这会抛出
ZoneInfoNotFoundError: '没有找到关键本地时间的时区'
那我还需要使用第三方库吗?例如
由于time.tzname[time.daylight]
返回一个本地化名称(在我的例子中是德语,例如“Mitteleuropäische Sommerzeit”),这也不起作用:
有什么想法吗?
ps 要在 Python < 3.9 上尝试此操作,请使用backports
(另请参阅此答案):
windows - 蟑螂数据库问题开始:无法初始化节点:无法加载命名时区
蟑螂数据库问题开始:无法初始化节点:无法加载命名时区。
我下载了 zoneinfo.zip 并解压缩并配置了环境变量 ZONEINFO 并提供了 C:\Program Files\timezone\zoneinfo 之类的路径,但仍然面临相同的问题。附上截图。在此处输入图像描述
python-3.x - Python 3.9:使用标准库构造 DST 有效时间戳
我想只使用 Python 3.9 中的标准库来构建 DST 有效的时间戳,并希望在这个版本中可以做到这一点。
在我的时区“欧洲/柏林”中,2020 年的 DST 过境点是:2020 年
3 月 29 日 02:00 时钟切换到 03:00(没有 2 小时!)
2020 年 10 月 25 日 03:00时钟切换回 02:00(小时 2 存在两次!)
我的脚本产生以下输出:
MARCH
2020-03-29 01:59:00+01:00 CET plus 1 h: 2020-03-29 02: 59:00+01:00 CET
(应该是 03:59:00 CEST,因为没有 2 小时!)
OCTOBER
2020-10-25 02:00:00+02:00 CEST 加 1 小时:2020-10-25 03:00:00+01:00 CET
(似乎可以 - 编辑:应该是 02:00 CET!!!)
下面提供了示例代码。Windows 用户可能需要“pip install tzdata”才能使其工作。
任何建议将不胜感激!