这个模块提供了子类化抽象的时区实现 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 子类,它最好地表示在POSIX 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 被解释为当地时间。

返回

返回 dateutiltzinfo 子类。

在 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 属性。这应该是0或1。

返回

返回一个 getattr(dt, 'fold', 0) 收益率 fold 适用于所有版本的Python。在python3.6之前的版本中,这是一个 _DatetimeWithFold 对象的子类 datetime.datetimefold 添加属性,如果 fold 是1。

2.6.0 新版功能.

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

给定一个日期时间和一个时区,确定给定的日期时间是否不明确(即是否有两个时间仅根据其DST状态区分)。

参数
  • dt -- A datetime.datetime (如果 tz 提供。)

  • tz -- A datetime.tzinfo 支持 fold 属性。如果 None 否则,将使用datetime自己的时区。

返回

无论“墙时间”在中是否不明确,都返回布尔值 tz .

2.6.0 新版功能.

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

一个给定的时间间隔是否会决定一个给定的时间间隔。

参数
  • dt -- A datetime.datetime (如果 tz 提供。)

  • tz -- A datetime.tzinfo 支持 fold 属性。如果 None 否则,将使用datetime自己的时区。

返回

无论“墙时间”是否存在于 tz .

2.7.0 新版功能.

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

给定一个可能是虚构的日期时间,返回一个现有的日期时间。

所以假设在这个时间段中,偏移量不会发生变化。

>>> 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 -- 要查询其转换的年份。

返回

返回A tuple 属于 datetime.datetime 物体, (dston, dstoff) 对于具有年度DST过渡的区域,或 None 对于固定偏移区域。

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

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

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

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

  • dstabbr -- 夏令时的缩写(例如。 'EDT' ). 如果指定,则在没有其他DST信息的情况下,假定DST发生并且默认行为或 dstoffsetstartend 被使用。如果未指定且未指定其他DST信息,则假定该区域没有DST。如果未指定,而其他DST信息 is 指定,DST出现在区域中,但时区缩写保持不变。

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

  • start -- A relativedelta.relativedelta 对象或等效对象,指定夏令时开始的时间和时间。例如,要指定DST从3月的第2个星期日凌晨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 变量(参见 GNU C Library: TZ Variable 了解更多详细信息)。

有一个值得注意的例外,那就是POSIX样式的时区使用倒置的偏移格式,所以通常情况下 GMT+3 将被解析为偏移3小时 后面 格林威治标准时间 tzstr 时区对象将此解析为偏移量3小时 向前地 如果要保持POSIX行为,请传递 True 价值到 posix_offset .

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

参数
  • s -- 时区字符串 TZ 可变格式。这可能是一个 bytes (2.x: strstr (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个时区转换的单个偏移规则的格式提供。

Param

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

注解

仅在Windows上可用

display()

返回时区的显示名称。

static list()

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

transitions(year)

对于给定的一年,获取DST的开启和关闭转换时间,通常在标准时间一侧表示。对于没有转换的区域,此函数返回 None .

参数

year -- 要查询其转换的年份。

返回

返回A tuple 属于 datetime.datetime 物体, (dston, dstoff) 对于具有年度DST过渡的区域,或 None 对于固定偏移区域。