Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python GMT时间戳的固定偏移规格_Python_Datetime_Timezone_Pytz - Fatal编程技术网

Python GMT时间戳的固定偏移规格

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-

我的数据以格林威治标准时间(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-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