时间对象表示一天中的(本地)时间,独立于任何特定日期,并且可以通过tzinfo对象进行调整。

class datetime.time(hour=0minute=0second=0microsecond=0tzinfo=None*fold=0)
所有参数都是可选的。 tzinfo可能是None或子类的一个实例 tzinfo。其余参数必须是以下范围内的整数:

如果给出了超出这些范围的参数,ValueError则引发。所有默认为0除了tzinfo,它默认为None.

类属性:

time.min
最早可表示的time,.time(0, 0, 0, 0)
time.max
最新的可代表time, .time(23, 59, 59, 999999)
time.resolution
time不相等对象 之间的最小可能差异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.fromisoformat(time_string)
以 .发出的格式之一返回time对应于time_stringtime.isoformat()的 a 。具体来说,此函数支持 format(s) 格式的字符串HH[:MM[:SS[.fff[fff]]]][+HH:MM[:SS[.ffffff]]]

警告

这不支持解析任意 ISO 8601 字符串 – 它仅用作time.isoformat().

3.7 版中的新功能。

实例方法:

time.replace(hour=self.hourminute=self.minutesecond=self.secondmicrosecond=self.microsecondtzinfo=self.tzinfo* fold=0)
返回time具有相同值的 a,除了那些由指定的关键字参数赋予新值的属性。请注意, tzinfo=None可以指定time从aware创建一个naive time,而不转换时间数据。

3.6 新版功能:添加了fold参数。

time.isoformat(timespec=’auto’)
以 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': 包括hourminute以 HH:MM 格式。
  • 'seconds': 包括hourminute, 和second HH: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__()
时间tstr(t)相当于t.isoformat()
time.strftime(format)
返回表示时间的字符串,由显式格式字符串控制。有关格式化指令的完整列表,请参阅 strftime()和strptime()行为
time.__format__(format)
与…相同time.strftime()。这使得可以time格式化的字符串文字中和使用时为对象指定格式字符串str.format()。有关格式化指令的完整列表,请参阅 strftime() 和strptime() 行为
time.utcoffset()
如果tzinfoNone,则返回None,否则返回 self.tzinfo.utcoffset(None),如果后者不返回None或者timedelta幅度小于一天的对象,则引发异常。

版本3.7中已更改: UTC偏移量不限于整数分钟。

time.dst()
如果tzinfoNone,则返回None,否则返回 self.tzinfo.dst(None),并在后者未返回时引发异常None,或者在timedelta大小小于一天的情况下引发异常 。

在版本3.7中更改: DST偏移不限于整数分钟。

time.tzname()
如果tzinfoNone,则返回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.'