本模块提供了对抽象子类化的时区实现 datetime.tzinfo 键入。有一些类可以处理tzfile格式的文件(通常位于 /etc/localtime/usr/share/zoneinfo 等)、TZ环境字符串(所有已知格式)、给定范围(在相对增量的帮助下)、本地机器时区、固定偏移时区和UTC时区。

物体

dateutil.tz.UTC

一个方便的例子 dateutil.tz.tzutc .

在 2.7.0 版本加入.

功能

dateutil.tz.gettz(name=None)

从字符串表示形式检索时区对象

此函数旨在检索 tzinfo 最能表示将在以下情况下使用的时区的子类 TZ variable 设置为相同的值。

如果没有参数或空字符串传递给 gettz ,返回当地时间:

>>> gettz()
tzfile('/etc/localtime')

此函数也是将IANA TZ数据库键映射到的首选方式 tzfile 对象:

>>> gettz('Pacific/Kiritimati')
tzfile('/usr/share/zoneinfo/Pacific/Kiritimati')

在Windows上,该标准被扩展为包括操作系统提供的特定于Windows的区域名称:

>>> gettz('Egypt Standard Time')
tzwin('Egypt Standard Time')

传递GNU TZ 样式字符串时区规范返回 tzstr 对象:

>>> gettz('AEST-10AEDT-11,M10.1.0/2,M4.1.0/3')
tzstr('AEST-10AEDT-11,M10.1.0/2,M4.1.0/3')
参数:

name -- 时区名称(IANA,或在Windows上为Windows键)、 tzfile(5) zoneinfo文件或 TZ 可变样式时区说明符。空字符串、无参数或 None 被解释为当地时间。

返回:

返回以下对象之一的实例 dateutil %s tzinfo 子类。

在 2.7.0 版本发生变更: 在2.7.0版之后,任何两个调用 gettz 使用相同的输入字符串将返回相同的对象:

>>> tz.gettz('America/Chicago') is tz.gettz('America/Chicago')
True

除了提高性能之外,这还可以确保 "same zone" semantics 用于同一区域中的日期时间。

gettz.nocache()

gettz的非缓存版本

gettz.cache_clear()
dateutil.tz.enfold(dt, fold=1)[源代码]

提供统一的界面,用于将 fold 属性设置为在实施PEP-495之前和之后的DATETIME。

参数:

fold -- 属性的值 fold 属性添加到返回的DateTime中。这应该是0或1。

返回:

返回一个对象,该对象的 getattr(dt, 'fold', 0) 退货 fold 适用于所有版本的Python。在Python 3.6之前的版本中,这是 _DatetimeWithFold 对象,该对象是 datetime.datetime 使用 fold 属性已添加,如果 fold 是1。

在 2.6.0 版本加入.

dateutil.tz.datetime_ambiguous(dt, tz=None)[源代码]

在给定日期时间和时区的情况下,确定给定的日期时间是否有歧义(即,是否有两个仅根据其DST状态区分的时间)。

参数:
  • dt -- A datetime.datetime (其时区在以下情况下将被忽略 tz 是提供的。)

  • tz -- A datetime.tzinfo 支持 fold 属性。如果 None 或未提供,则将使用日期时间自己的时区。

返回:

中的“营业时间”是否不明确都返回一个布尔值。 tz

在 2.6.0 版本加入.

dateutil.tz.datetime_exists(dt, tz=None)[源代码]

在给定日期时间和时区的情况下,确定给定的日期时间是否会出现差距。

参数:
  • dt -- A datetime.datetime (其时区在以下情况下将被忽略 tz 是提供的。)

  • tz -- A datetime.tzinfo 支持 fold 属性。如果 None 或未提供,则将使用日期时间自己的时区。

返回:

返回一个布尔值,而不管“营业时间”是否存在于 tz

在 2.7.0 版本加入.

dateutil.tz.resolve_imaginary(dt)[源代码]

给定一个可能是虚构的DateTime,则返回现有的DateTime。

此函数假定虚构的DateTime表示如果未发生偏移转换,区域中的墙时间将是什么,因此它将始终随着转换的偏移更改而向前移动。

>>> from dateutil import tz
>>> from datetime import datetime
>>> NYC = tz.gettz('America/New_York')
>>> print(tz.resolve_imaginary(datetime(2017, 3, 12, 2, 30, tzinfo=NYC)))
2017-03-12 03:30:00-04:00

>>> KIR = tz.gettz('Pacific/Kiritimati')
>>> print(tz.resolve_imaginary(datetime(1995, 1, 1, 12, 30, tzinfo=KIR)))
1995-01-02 12:30:00+14:00

作为说明, datetime.astimezone() 保证生成有效的现有日期时间,因此往返UTC就足以获得现有的日期时间,但是,这通常“退回”到更早的时间,而不是前退到STD端(尽管对此行为没有保证)。

参数:

dt -- A datetime.datetime 可能存在也可能不存在。

返回:

返回现有的 datetime.datetime 。如果 dt 不是虚构的,则保证返回的DateTime与传递给函数的对象相同。

在 2.7.0 版本加入.

Classes

class dateutil.tz.tzutc[源代码]

这是一个表示UTC时区的tzinfo对象。

示例:

>>> from datetime import *
>>> from dateutil.tz import *

>>> datetime.now()
datetime.datetime(2003, 9, 27, 9, 40, 1, 521290)

>>> datetime.now(tzutc())
datetime.datetime(2003, 9, 27, 12, 40, 12, 156379, tzinfo=tzutc())

>>> datetime.now(tzutc()).tzname()
'UTC'

在 2.7.0 版本发生变更: tzutc() 现在是单件的,所以结果是 tzutc() 将始终返回相同的对象。

>>> from dateutil.tz import tzutc, UTC
>>> tzutc() is tzutc()
True
>>> tzutc() is UTC
True
class dateutil.tz.tzoffset(name, offset)[源代码]

表示与UTC的固定偏移量的简单类。

参数:
  • name -- 时区名称,在以下情况下返回 tzname() 被称为。

  • offset -- 以秒为单位的时区偏移,或(从版本2.6.0开始,表示为 datetime.timedelta 对象)。

class dateutil.tz.tzlocal[源代码]

A tzinfo 子类围绕 time 时区函数。

class dateutil.tz.tzwinlocal[源代码]

类的新实例,该实例表示Windows注册表中的本地时区信息

而当 dateutil.tz.tzlocal 进行系统调用(通过 time 模块)来检索时区信息, tzwinlocal 直接从Windows注册表检索规则,并创建如下对象 dateutil.tz.tzwin

因为Windows没有等效于 time.tzset() ,在Windows上, dateutil.tz.tzlocal 实例将始终反映时区设置 在进程开始时 ,意味着在Windows上运行程序期间更改计算机的时区设置将 not 被反映在 dateutil.tz.tzlocal 。因为 tzwinlocal 直接读取注册表,它不受此问题的影响。

备注

仅在Windows上可用

display()

返回时区的显示名称。

transitions(year)

对于给定的年份,获取DST的开和关转换时间,始终以标准时间表示。对于没有过渡的区域,此函数返回 None

参数:

year -- 您要查询其过渡的年份。

返回:

返回一个 tupledatetime.datetime 对象, (dston, dstoff) 对于每年DST过渡的区域,或 None 用于固定偏移分区。

class dateutil.tz.tzrange(stdabbr, stdoffset=None, dstabbr=None, dstoffset=None, start=None, end=None)[源代码]

这个 tzrange 对象是由一组偏移量和缩写指定的时区,等同于 TZ 变量可以在类似POSIX的系统中指定,但使用Python增量对象指定DST开始、结束和偏移。

参数:
  • stdabbr -- 标准时间的缩写(例如 'EST' )。

  • stdoffset -- 整数或 datetime.timedelta 对象或等效对象,指定距UTC的基准偏移量。如果未指定,则使用+00:00。

  • dstabbr -- DST/“Summer”时间的缩写(例如 'EDT' )。如果在没有其他DST信息的情况下指定了DST,则假定会发生DST,并且默认行为或 dstoffsetstartend 是使用的。如果未指定且未指定其他DST信息,则假定此区域没有DST。如果这是未指定的,并且其他DST信息是 is 指定时,DST出现在区域中,但时区缩写保持不变。

  • dstoffset -- a整数或 datetime.timedelta 指定DST期间UTC偏移的对象或等效对象。如果未指定而指定了任何其他DST信息,则假定为STD偏移量+1小时。

  • start -- A relativedelta.relativedelta 对象或等效对象,指定夏令时开始的时间和一年中的时间。例如,要指定DST在3月份的第二个星期日凌晨2点开始,请传递: relativedelta(hours=2, month=3, day=1, weekday=SU(+2)) 如果未指定而指定了任何其他DST信息,则默认值为4月份第一个星期日的凌晨2点。

  • end -- A relativedelta.relativedelta 对象或等效对象,表示夏令时结束的时间和时间,其规范方法与 start 。需要注意的一点是,这应该指向 标准 区域,因此如果DST区域中的转换发生在凌晨2点,并且时钟被调回1小时到凌晨1点,则将 hours 参数设置为+1。

示例:

>>> tzstr('EST5EDT') == tzrange("EST", -18000, "EDT")
True

>>> from dateutil.relativedelta import *
>>> range1 = tzrange("EST", -18000, "EDT")
>>> range2 = tzrange("EST", -18000, "EDT", -14400,
...                  relativedelta(hours=+2, month=4, day=1,
...                                weekday=SU(+1)),
...                  relativedelta(hours=+1, month=10, day=31,
...                                weekday=SU(-1)))
>>> tzstr('EST5EDT') == range1 == range2
True
class dateutil.tz.tzstr(s, posix_offset=False)[源代码]

tzstr 对象是由时区字符串指定的时区对象,因为它将传递给 TZ 变量在POSIX样式的系统上(请参见 GNU C Library: TZ Variable 了解更多详细信息)。

有一个值得注意的例外,那就是POSIX样式的时区使用反转偏移格式,因此通常 GMT+3 将被解析为偏移3小时 在后面 格林尼治标准时间。这个 tzstr 时区对象会将此解析为偏移3小时 前方 格林尼治标准时间。如果希望保持POSIX行为,请传递一个 True 值为 posix_offset

这个 tzrange 对象提供相同的功能,但使用 relativedelta.relativedelta 对象。而不是弦。

参数:
  • s -- 中的时区字符串 TZ 可变格式。这可以是一个 bytes (2.x: str ), str (2.x: unicode )或发出Unicode字符的流(例如 StringIO )。

  • posix_offset -- 可选。如果设置为 True ,将字符串解释为 GMT+3UTC+3 因为是3小时 在后面 根据POSIX标准,UTC而不是提前。

小心

在2.7.0之前的版本中,此函数还支持以下格式的时区:

  • EST5EDT,4,0,6,7200,10,0,26,7200,3600

  • EST5EDT,4,1,0,7200,10,-1,0,7200,3600

此格式是非标准的,已弃用;此函数将引发 DeprecatedTZFormatWarning 直到在未来版本中删除支持为止。

class dateutil.tz.tzical(fileobj)[源代码]

此对象用于解析iCalendar样式 VTIMEZONE 结构,如中所述。 RFC 5545 第4.6.5节转换为一个或多个 tzinfo 对象。

参数:

fileobj -- iCalendar格式的文件或流,应使用CRLF结尾进行UTF-8编码。

get(tzid=None)[源代码]

检索 datetime.tzinfo 对象通过其 tzid

参数:

tzid -- 如果正好有一个时区可用,则省略 tzid 或通过 None 值返回它。否则有效密钥(可从 keys() )是必需的。

抛出:

ValueError -- 如果出现以下情况,则引发 tzid 未指定,但定义的区域多于或少于1个。

返回:

返回一个 datetime.tzinfo 对象,该对象表示相关时区或 None 如果 tzid 没有找到。

keys()[源代码]

以列表形式检索可用时区。

class dateutil.tz.tzwin(name)[源代码]

从Windows注册表中的区域信息创建的时区对象

这些内容类似于 dateutil.tz.tzrange 对象,因为对于每年0或2个时区转换,以单个偏移规则的格式提供时区数据。

参数:

命名Windows时区键的名称,例如“东部标准时间”。可以使用以下命令检索完整的密钥列表 tzwin.list()

备注

仅在Windows上可用

display()

返回时区的显示名称。

static list()

返回系统已知的所有时区的列表。

transitions(year)

对于给定的年份,获取DST的开和关转换时间,始终以标准时间表示。对于没有过渡的区域,此函数返回 None

参数:

year -- 您要查询其过渡的年份。

返回:

返回一个 tupledatetime.datetime 对象, (dston, dstoff) 对于每年DST过渡的区域,或 None 用于固定偏移分区。