Python GMT时间戳的固定偏移规格
我的数据以格林威治标准时间(GMT)的时间戳存储: 现在我想查看中欧时间(CET)中的数据,该时间与格林尼治标准时间的固定偏移量为+1小时Python GMT时间戳的固定偏移规格,python,datetime,timezone,pytz,Python,Datetime,Timezone,Pytz,我的数据以格林威治标准时间(GMT)的时间戳存储: 现在我想查看中欧时间(CET)中的数据,该时间与格林尼治标准时间的固定偏移量为+1小时 # Central European Time (CET) cet_tz = pytz.timezone('Etc/GMT+1') timestamp_cet = timestamp_utc.astimezone(cet_tz) print(timestamp_cet) 2018-01-18 22:00:00-01:00 这让我很困惑,我本以为2018-
# Central European Time (CET)
cet_tz = pytz.timezone('Etc/GMT+1')
timestamp_cet = timestamp_utc.astimezone(cet_tz)
print(timestamp_cet)
2018-01-18 22:00:00-01:00
这让我很困惑,我本以为2018-01-19 00:00:00+01:00
以下是关于固定偏移的说明:
固定偏移量
上述“Etc/GMT*”时区提供固定的
偏移规格,但要注意违反直觉的标志
惯例
有人能解释一下这是什么意思吗?这是否真的意味着,如果我想要Etc/GMT+1
我必须做Etc/GMT-1
自:
print(timestamp_utc.astimezone(pytz.timezone('Etc/GMT-1')))
预期结果:
2018-01-19 00:00:00+01:00
有人能解释这种反直觉行为的逻辑吗
编辑
我想我可以用pytz.timezone('CET')
作为中欧时间。但这在夏季夏令时(UTC+2:00
)映射到CEST,因此不适合用作真正的CET时区。此外,时区CET
也很重要
因此,
Etc/GMT-1
是表示真正的中欧时间(UTC+01:00
)的标准方式 Etc/GMT*分区设计为兼容POSIX,以便在未安装完整时区数据库的系统上向后兼容TZ
环境变量。POSIX时区规则的偏移符号与我们通常期望的ISO 8601标准相反
评论中对此作了解释:
与区域名称中的POSIX TZ设置保持一致,即使这与许多人的期望相反。POSIX在格林威治以西有积极迹象,但许多人预计在格林威治以东有积极迹象。例如,TZ='Etc/GMT+4'使用缩写“-04”,对应于UT后4小时(即格林威治以西),尽管许多人认为这意味着UT前4小时(即格林威治以东)
还描述了:
“Etc”的特殊区域用于某些行政区域,特别是代表协调世界时的“Etc/UTC”。为了符合POSIX样式,以“Etc/GMT”开头的区域名称的符号与标准ISO 8601约定相反。在“Etc”区域中,格林尼治标准时间以西的区域有一个正符号,而以东的区域在其名称中有一个负符号(例如,“Etc/GMT-14”比格林尼治标准时间提前14小时)
通常,对于陆地上有人居住的位置,您应该更喜欢使用基于位置的分区标识符。例如,在荷兰使用Europe/Amsterdam
。这样做的好处是在正确的时间点正确地在CET和CEST之间切换,以及之前的任何历史过渡
使用Etc/GMT*
区域为边缘情况预留,如海上船舶的跟踪时间
您可以查看tzdb区域名称的完整列表。在未安装完整时区数据库的系统上,
Etc/GMT*
区域设计为兼容POSIX,以向后兼容TZ
环境变量。POSIX时区规则的偏移符号与我们通常期望的ISO 8601标准相反
评论中对此作了解释:
与区域名称中的POSIX TZ设置保持一致,即使这与许多人的期望相反。POSIX在格林威治以西有积极迹象,但许多人预计在格林威治以东有积极迹象。例如,TZ='Etc/GMT+4'使用缩写“-04”,对应于UT后4小时(即格林威治以西),尽管许多人认为这意味着UT前4小时(即格林威治以东)
还描述了:
“Etc”的特殊区域用于某些行政区域,特别是代表协调世界时的“Etc/UTC”。为了符合POSIX样式,以“Etc/GMT”开头的区域名称的符号与标准ISO 8601约定相反。在“Etc”区域中,格林尼治标准时间以西的区域有一个正符号,而以东的区域在其名称中有一个负符号(例如,“Etc/GMT-14”比格林尼治标准时间提前14小时)
通常,对于陆地上有人居住的位置,您应该更喜欢使用基于位置的分区标识符。例如,在荷兰使用Europe/Amsterdam
。这样做的好处是在正确的时间点正确地在CET和CEST之间切换,以及之前的任何历史过渡
使用Etc/GMT*
区域为边缘情况预留,如海上船舶的跟踪时间
您可以查看tzdb区域名称的完整列表。感谢您的清晰解释!此链接:结合POSIX合规性,为我提供了更多关于时区理论的信息,感谢您的明确解释!这个链接:给了我更多关于时区理论和POSIX合规性的信息
2018-01-19 00:00:00+01:00