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.
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.
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
, 和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__()
- 时间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.'