假设时区名是 America/Halifax
, 如何获取对应的 GMT
格式
timezone = "America/Halifax"
# 输出 GMT-04:00
对时区这一块子不太熟悉, 求教! 感谢
1
hsfzxjy 2022-02-14 17:45:26 +08:00 via Android
用 pytz
|
2
shylockhg 2022-02-14 17:47:56 +08:00
iana timezone database
|
3
julyclyde 2022-02-14 18:52:41 +08:00
这俩不是固定对应啊
|
5
billgong 2022-02-15 00:00:02 +08:00 via iPhone
@oIMOo 楼上说的没错,确实是不对应。比如 Australia/Melbourne 因为有夏令时,UTC+10/UTC+11 都是对的
所以时区能用 tzdata 就用 tzdata ,需要计算时差的情况用库解决,不要直接算绝对值。 我就遇到个经典的例子,之前用某 SaaS 的 API 写 automation ,时区用 Australia/Melbourne 不行,非得 Australia/Sydney 否则报错(这俩地方现今都是 AEST/AEDT ,但历史上有细微差别),我估计就是他们用的某个 vendor lib 不兼容 tzdata ,其中有时区转译层导致的。 |
6
Livid MOD |
8
vegetableChick OP @billgong 感谢回复, 使用场景是给用户给账户设置时区, 但是需要给他展示选择 ( GMT-07:00)America/Dawson_Creek
这种格式 |
10
julyclyde 2022-02-15 12:17:03 +08:00
@vegetableChick 对用户来说只有地方时区是有意义的,GMT 时差没有意义
|
11
gadfly3173 2022-02-15 15:24:11 +08:00
|
12
vegetableChick OP @Livid 用这个包, 如果 `America/Los_Angeles` 现在是 `GMT-8` , 如果 3 月 23 再看就是 `GMT-7`吧?
|
13
Livid MOD @vegetableChick 它会帮你处理好时区之间的转换。你只需要用 to 就好。
|
14
billgong 2022-02-16 06:43:37 +08:00
@vegetableChick 楼上说的都没什么问题
https://pythonhosted.org/pytz/#localized-times-and-date-arithmetic 如果初始化为环境当前时间的话,提取出来的 UTC offset 应该是将夏令时考虑在内的 |