这是保存时区规则的标准格式吗?
Is this a standard format for saving timezone rules?
我正在 python-dateutil
上做一些 "software archaeology" 以完整记录(并加强)dateutil.tz.tzstr
接受的格式,我遇到了一种奇怪的时区格式,这显然是旨在明确支持(link 转到代码):
# GMT0BST,3,0,30,3600,10,0,26,7200[,3600]
只要阅读代码,我就明白了它是如何工作的。它开始时像一个 TZ
环境变量:
GMT
:标准时间缩写
0
:标准偏移量(以小时为单位)
BST
: 夏令时缩写
然后剩下的是逗号分隔的列表,分为两部分:
3,0,30,3600
:DST->STD 转换时间说明符 - 月、月中的星期、星期中的日期、转换发生的午夜后的秒数(请注意,当 "week of month" 为 0 时,数字以下实际上是一个月中的第几天)
10,0,26,7200
:STD->DST 转换时间说明符 - 同上
[,3600]
:如果指定,这表示 DST 期间的偏移量有多大(默认为 1 小时)
相当于这个字符串的GNU TZ
variable是GMT0BST,J89/1,J299/2
:
>>> from dateutil import tz
>>> tz1 = tz.tzstr('GMT0BST,3,0,30,3600,10,0,26,7200')
>>> tz2 = tz.tzstr('GMT0BST,J89/1,J299/2')
>>> tz1 == tz2
True
这是某个地方的标准时区格式,还是 dateutil
的早期维护者之一添加的?添加自定义时区格式似乎有点奇怪,该格式表达与 GNU TZ
变量完全相同的内容,但我在搜索时区时只看到 "IANA database" 和 "POSIX TZ variable" 作为格式规则。
不,这不是任何类型的标准格式 (AFAIK)。必须是 dateutil 内部的东西。
请注意,这似乎适用于 Europe/London
,正确的 POSIX 字符串(当前年份)应该是 GMT0BST,M3.3.0/1,M10.5.0
我正在 python-dateutil
上做一些 "software archaeology" 以完整记录(并加强)dateutil.tz.tzstr
接受的格式,我遇到了一种奇怪的时区格式,这显然是旨在明确支持(link 转到代码):
# GMT0BST,3,0,30,3600,10,0,26,7200[,3600]
只要阅读代码,我就明白了它是如何工作的。它开始时像一个 TZ
环境变量:
GMT
:标准时间缩写0
:标准偏移量(以小时为单位)BST
: 夏令时缩写
然后剩下的是逗号分隔的列表,分为两部分:
3,0,30,3600
:DST->STD 转换时间说明符 - 月、月中的星期、星期中的日期、转换发生的午夜后的秒数(请注意,当 "week of month" 为 0 时,数字以下实际上是一个月中的第几天)10,0,26,7200
:STD->DST 转换时间说明符 - 同上[,3600]
:如果指定,这表示 DST 期间的偏移量有多大(默认为 1 小时)
相当于这个字符串的GNU TZ
variable是GMT0BST,J89/1,J299/2
:
>>> from dateutil import tz
>>> tz1 = tz.tzstr('GMT0BST,3,0,30,3600,10,0,26,7200')
>>> tz2 = tz.tzstr('GMT0BST,J89/1,J299/2')
>>> tz1 == tz2
True
这是某个地方的标准时区格式,还是 dateutil
的早期维护者之一添加的?添加自定义时区格式似乎有点奇怪,该格式表达与 GNU TZ
变量完全相同的内容,但我在搜索时区时只看到 "IANA database" 和 "POSIX TZ variable" 作为格式规则。
不,这不是任何类型的标准格式 (AFAIK)。必须是 dateutil 内部的东西。
请注意,这似乎适用于 Europe/London
,正确的 POSIX 字符串(当前年份)应该是 GMT0BST,M3.3.0/1,M10.5.0