datetime.time基本日期和时间类型的time类详解(24) – Python语言(必读进阶学习教程)(参考资料)
时间对象表示一天中的(本地)时间,独立于任何特定日期,并且可以通过tzinfo对象进行调整。
- class
datetime.hour=0time(minute=0,second=0,microsecond=0,tzinfo=None,*,fold=0,) - 所有参数都是可选的。 tzinfo可能是
None或子类的一个实例tzinfo。其余参数必须是以下范围内的整数:0 <= hour < 24,0 <= minute < 60,0 <= second < 60,0 <= microsecond < 1000000,fold in [0, 1].
如果给出了超出这些范围的参数,
ValueError则引发。所有默认为0除了tzinfo,它默认为None.
类属性:
time.min- 最早可表示的
time,.time(0, 0, 0, 0)
time.max- 最新的可代表
time, .time(23, 59, 59, 999999)
time.resolutiontime不相等对象 之间的最小可能差异timedelta(microseconds=1),尽管请注意time不支持对象上的算术运算。
实例属性(只读):
time.hour- 在
range(24).
time.minute- 在
range(60).
time.second- 在
range(60).
time.microsecond- 在
range(1000000).
time.tzinfo- 对象作为 tzinfo 参数传递给
time构造函数,或者None如果没有传递。
time.fold- 在 [0, 1] 中。 用于在重复间隔期间消除壁时间的歧义。 (当时钟在夏令时结束时回滚或由于政治原因减少当前区域的 UTC 偏移量时,会出现重复间隔。)值 0 (1) 表示两个时刻中较早(较晚)的时刻 相同的墙上时间表示。
3.6 版中的新功能。
支持的操作:
-
时间与时间的比较,其中当 a 在时间上先于 b 时,a 被认为小于 b。 如果一个比较对象是幼稚的,而另一个是知道的,则在尝试进行顺序比较时会引发 TypeError。 对于相等比较,天真的实例永远不会等于有意识的实例。
如果两个比较对象都知道,并且具有相同的 tzinfo 属性,则忽略公共 tzinfo 属性并比较基本时间。 如果两个比较对象都知道并且具有不同的 tzinfo 属性,则首先通过减去它们的 UTC 偏移量(从 self.utcoffset() 获得)来调整比较对象。 为了阻止混合类型比较回退到按对象地址进行的默认比较,当将时间对象与不同类型的对象进行比较时,会引发 TypeError,除非比较为 == 或 !=。 后一种情况分别返回 False 或 True。
在 3.3 版更改:朴素和有意识时间实例之间的相等比较不会引发 TypeError。
- 哈希,用作字典键
- 高效酸洗
在布尔上下文中,一个time对象总是被认为是真的。
在 3.5 版更改:在 Python 3.5 之前,如果一个time对象以 UTC 表示午夜,则该对象被认为是错误的。这种行为被认为是晦涩难懂且容易出错的,已在 Python 3.5 中删除。
其他构造函数:
- 类方法
time.time_stringfromisoformat() - 以 .发出的格式之一返回
time对应于time_stringtime.isoformat()的 a 。具体来说,此函数支持 format(s) 格式的字符串HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]。警告
这不支持解析任意 ISO 8601 字符串 – 它仅用作
time.isoformat().3.7 版中的新功能。
实例方法:
time.hour=self.hourreplace(minute=self.minute,second=self.second,microsecond=self.microsecond,tzinfo=self.tzinfo,* fold=0,)- 返回
time具有相同值的 a,除了那些由指定的关键字参数赋予新值的属性。请注意,tzinfo=None可以指定time从aware创建一个naivetime,而不转换时间数据。3.6 新版功能:添加了
fold参数。
time.timespec=’auto’isoformat()- 以 ISO 8601 格式返回一个表示时间的字符串,HH:MM:SS.ffffff 或者,如果
microsecond为 0,则 HH:MM:SS 如果utcoffset()不返回None,则附加一个字符串,给出 UTC 偏移量:HH:MM:SS。 ffffff+HH:MM[:SS[.ffffff]] 或者,如果 self.microsecond 为 0,则 HH:MM:SS+HH:MM[:SS[.ffffff]]。可选参数timespec指定要包含的时间附加组件的数量(默认为
'auto')。它可以是以下之一:'auto': 如果微秒为 0,则与“秒”相同,否则与“微秒”相同。'hours': 包含hour在两位数的 HH 格式中。'minutes': 包括hour和minute以 HH:MM 格式。'seconds': 包括hour,minute, 和secondHH:MM:SS 格式。'milliseconds':包括全时,但将小数秒部分截断为毫秒。HH:MM:SS.sss 格式。'microseconds': 包括 HH:MM:SS.ffffff 格式的全职。
笔记
排除的时间分量被截断,而不是四舍五入。
ValueError将在无效的timespec参数上引发。
-
>>> from datetime import time >>> time(hour=12, minute=34, second=56, microsecond=123456).isoformat(timespec='minutes') '12:34' >>> dt = time(hour=12, minute=34, second=56, microsecond=0) >>> dt.isoformat(timespec='microseconds') '12:34:56.000000' >>> dt.isoformat(timespec='auto') '12:34:56'
版本3.6中的新功能:添加了timespec参数。
time.__str__()- 时间t,
str(t)相当于t.isoformat()。
time.format__format__()- 与…相同
time.strftime()。这使得可以time在格式化的字符串文字中和使用时为对象指定格式字符串str.format()。有关格式化指令的完整列表,请参阅 strftime() 和strptime() 行为。
time.utcoffset()- 如果
tzinfo是None,则返回None,否则返回self.tzinfo.utcoffset(None),如果后者不返回None或者timedelta幅度小于一天的对象,则引发异常。版本3.7中已更改: UTC偏移量不限于整数分钟。
time.dst()- 如果
tzinfo是None,则返回None,否则返回self.tzinfo.dst(None),并在后者未返回时引发异常None,或者在timedelta大小小于一天的情况下引发异常 。在版本3.7中更改: DST偏移不限于整数分钟。
time.tzname()- 如果
tzinfo是None,则返回None,否则返回self.tzinfo.tzname(None),或者如果后者未返回异常或引发None字符串对象则引发异常。
例:
>>> from datetime import time, tzinfo, timedelta
>>> class GMT1(tzinfo):
... def utcoffset(self, dt):
... return timedelta(hours=1)
... def dst(self, dt):
... return timedelta(0)
... def tzname(self,dt):
... return "Europe/Prague"
...
>>> t = time(12, 10, 30, tzinfo=GMT1())
>>> t # doctest: +ELLIPSIS
datetime.time(12, 10, 30, tzinfo=<GMT1 object at 0x...>)
>>> gmt = GMT1()
>>> t.isoformat()
'12:10:30+01:00'
>>> t.dst()
datetime.timedelta(0)
>>> t.tzname()
'Europe/Prague'
>>> t.strftime("%H:%M:%S %Z")
'12:10:30 Europe/Prague'
>>> 'The {} is {:%H:%M}.'.format("time", t)
'The time is 12:10.'