这是保存时区规则的标准格式吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这是保存时区规则的标准格式吗?相关的知识,希望对你有一定的参考价值。

我正在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 variableGMT0BST,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变量”作为格式。

答案

不,这不是任何形式的标准格式(AFAIK)。必须是dateutil内部的东西。

请注意,这似乎是针对Europe/London,正确的POSIX字符串(当前年份)将是GMT0BST,M3.3.0/1,M10.5.0

以上是关于这是保存时区规则的标准格式吗?的主要内容,如果未能解决你的问题,请参考以下文章

2003-07-16T01:24:32Z这是什么时间格式

PHP 时区问题 |英国夏令时和格林威治标准时间

服务器中没有 UTC 作为时区很重要吗? [复制]

不立即分离片段

.sprite 文件有标准格式吗?

c++11:使用HowardHinnant/date.h解析ISO8601格式字符串,并解决时区问题