问题标签 [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.

0 投票
1 回答
1255 浏览

go - 检测 ZONEINFO 在 Go 中是否失败

在 Go 中,您可以通过添加指向您要用于时区信息的特定文件的 ZONEINFO 环境变量来指定要使用的特定 zoneinfo.zip 文件。这很棒,因为它允许我确保我在前端和后端使用的 IANA 时区数据库的版本是相同的。

但是,似乎没有任何方法可以检测指定区域信息文件的使用是否失败。查看源代码(https://golang.org/src/time/zoneinfo.go),看起来使用指定文件的任何错误都会安静地失败,然后 go 将继续检查默认操作系统位置或默认 $ GOROOT 位置从那里提取时区信息。这不是我想要的行为,因为我想确定我正在使用我指定的区域信息版本。

我在解决方案方面考虑了以下内容,但我对其中任何一个都不满意。

  1. 我可以检查自己是否设置了环境变量,但这充其量只是一个部分解决方案,因为它没有告诉我文件是否真的可以被 LoadLocation 使用。
  2. 我可以确保不存在任何区域信息的备份位置。这似乎有点极端,意味着我必须非常小心代码在开发和生产设置中运行的环境。

有谁知道一种更优雅的方法来确保我使用由我的 ZONEINFO 环境变量指定的 zoneinfo.zip 文件?

更新:为了解决这个问题,我也从下面@chuckx 的答案中获得灵感,并整理了一个 Go 包,该包可以从使用哪个时区数据库中进行猜测工作。自述文件中包含有关如何使用 Go 安装获取正确版本的时区数据库的说明。

0 投票
1 回答
1101 浏览

javascript - javascript中的闰秒在哪里?

当我使用

  • 用于 TAI或 /usr/share/zoneinfo-leaps的自定义 zoneinfo 文件和
  • 修改后的 NTP 客户端(目前它只增加 27 秒;并等待大约 1 秒的时间戳)

在我的 ArchLinux 机器上,系统时间表现得很好:

但是:JavaScript 不会:

-阿恩

0 投票
1 回答
112 浏览

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但我担心这种方法将来会因某种原因适得其反。

0 投票
1 回答
1000 浏览

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。

我构建了可执行文件:

我正在寻找任何可以帮助我识别问题的想法。

0 投票
1 回答
478 浏览

mysql - 数据库中的时区错误

我已经在 phpmyadmin 中使用 CURRENT_TIMESTAMP 函数进行了约会。并且小时的输出值错了1小时。我已经尝试在 mysql 中使用 SET TIME_ZONE = '+01:00';

但是它仍然会提前 1 小时提交日期。有什么建议么?

0 投票
1 回答
81 浏览

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/Cas​​ablanca | 2019 年

/usr/share/zoneinfo/Africa/Cas​​ablanca 2019 年 5 月 5 日星期日 01:59:59 UT = 2019 年 5 月 5 日星期日 02:59:59 +01 isdst=0 gmtoff=3600

/usr/share/zoneinfo/Africa/Cas​​ablanca 2019 年 5 月 5 日星期日 02:00:00 UT = 2019 年 5 月 5 日星期日 02:00:00 +00 isdst=1 gmtoff=0

/usr/share/zoneinfo/Africa/Cas​​ablanca 2019 年 6 月 9 日星期日 01:59:59 UT = 2019 年 6 月 9 日星期日 01:59:59 +00 isdst=1 gmtoff=0

/usr/share/zoneinfo/Africa/Cas​​ablanca 2019 年 6 月 9 日星期日 02:00:00 UT = 2019 年 6 月 9 日星期日 03:00:00 +01 isdst=0 gmtoff=3600

0 投票
1 回答
1329 浏览

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 中使用的时区名称似乎匹配,但除了一些测试之外,我还没有进一步研究它。至于最后两个......我只是想领先一步,所以如果/当表格需要更新时,我没有麻烦。

0 投票
2 回答
5290 浏览

python - 在 Windows 上获取本地时区名称(Python 3.9 zoneinfo)

查看zoneinfoPython 3.9 中的模块,我想知道它是否还提供了一个方便的选项来检索 Windows 上的本地时区(操作系统设置)。

在 GNU/Linux 上,你可以做

但在 Windows 上,这会抛出

ZoneInfoNotFoundError: '没有找到关键本地时间的时区'

那我还需要使用第三方库吗?例如

由于time.tzname[time.daylight]返回一个本地化名称(在我的例子中是德语,例如“Mitteleuropäische Sommerzeit”),这也不起作用:

有什么想法吗?


ps 要在 Python < 3.9 上尝试此操作,请使用backports(另请参阅此答案):

0 投票
1 回答
396 浏览

windows - 蟑螂数据库问题开始:无法初始化节点:无法加载命名时区

蟑螂数据库问题开始:无法初始化节点:无法加载命名时区。

我下载了 zoneinfo.zip 并解压缩并配置了环境变量 ZONEINFO 并提供了 C:\Program Files\timezone\zoneinfo 之类的路径,但仍然面临相同的问题。附上截图。在此处输入图像描述

0 投票
1 回答
431 浏览

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”才能使其工作。

任何建议将不胜感激!