茨¶
本模块提供了对抽象子类化的时区实现 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
%stzinfo
子类。
在 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.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 -- 您要查询其过渡的年份。
- 返回:
返回一个
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增量对象指定DST开始、结束和偏移。- 参数:
stdabbr -- 标准时间的缩写(例如
'EST'
)。stdoffset -- 整数或
datetime.timedelta
对象或等效对象,指定距UTC的基准偏移量。如果未指定,则使用+00:00。dstabbr -- DST/“Summer”时间的缩写(例如
'EDT'
)。如果在没有其他DST信息的情况下指定了DST,则假定会发生DST,并且默认行为或dstoffset
,start
和end
是使用的。如果未指定且未指定其他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+3
或UTC+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编码。
- class dateutil.tz.tzwin(name)[源代码]¶
从Windows注册表中的区域信息创建的时区对象
这些内容类似于
dateutil.tz.tzrange
对象,因为对于每年0或2个时区转换,以单个偏移规则的格式提供时区数据。- 参数:
命名Windows时区键的名称,例如“东部标准时间”。可以使用以下命令检索完整的密钥列表
tzwin.list()
。
备注
仅在Windows上可用
- display()¶
返回时区的显示名称。
- static list()¶
返回系统已知的所有时区的列表。
- transitions(year)¶
对于给定的年份,获取DST的开和关转换时间,始终以标准时间表示。对于没有过渡的区域,此函数返回
None
。- 参数:
year -- 您要查询其过渡的年份。
- 返回:
返回一个
tuple
的datetime.datetime
对象,(dston, dstoff)
对于每年DST过渡的区域,或None
用于固定偏移分区。