我正在python-dateutil
上做一些“软件考古”来完全记录(并收紧)dateutil.tz.tzstr
接受的格式,我遇到了一个奇怪的时区格式,显然是明确支持(链接转到代码):
# GMT0BST,3,0,30,3600,10,0,26,7200[,3600]
只是阅读代码,我已经弄清楚它是如何工作的。它从TZ
环境变量开始:
GMT
:标准时间缩写0
:标准偏移量(以小时为单位)BST
:DST缩写其余的是逗号分隔的列表,分为两部分:
3,0,30,3600
:DST-> STD转换时间说明符 - 月份,星期几,星期几,转换发生午夜后的秒数(请注意,当“星期几”为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数据库”和“POSIX TZ变量”作为格式
答案 0 :(得分:1)
不,这不是任何形式的标准格式(AFAIK)。必须是dateutil内部的东西。
请注意,这似乎是Europe/London
,而正确的POSIX字符串(当前年份)将为GMT0BST,M3.3.0/1,M10.5.0