概述
datetime 模块还提供了 timedelta 数据类型,它表示一段时间,而不是一个时刻。
在交互式环境中输入以下代码:
➊ >>> delta = datetime.timedelta(days=11, hours=10, minutes=9, seconds=8)
➋ >>> delta.days, delta.seconds, delta.microseconds
(11, 36548, 0)
>>> delta.total_seconds()
986948.0
>>> str(delta)
'11 days, 10:09:08'
要创建 timedelta 对象,就用 datetime.timedelta()函数。datetime.timedelta()函数接受关键字参数
weeks、days、hours、minutes、seconds、milliseconds 和 microseconds。没有 month 和 year
关键字参数,因为“月”和“年”是可变的时间,依赖于特定月份或年份。timedelta 对象拥有的总时间以天、秒、微秒来表示。这些数字分别保存在 days、seconds 和 microseconds
属性中。total_seconds()方法返回只以秒表示的时间。将一个 timedelta 对象传入 str(),将返回格式良好的、人类可读的字符串表示。
在这个例子中,我们将关键字参数传入 datetime.delta(),指定 11 天、10 小时、 9 分和 8 秒的时间,将返回的 timedelta 对象保存在 delta
中➊。该 timedelta 对象的 days 属性为 11,seconds 属性为 36548(10 小时、9 分钟、8 秒,以秒表示)➋。调
用total_seconds()告诉我们,11 天、10 小时、9 分和 8 秒是 986948 秒。最后,将这个
timedelta 对象传入 str(),返回一个字符串,明确解释了这段时间。
算术运算符可以用于对 datetime 值进行日期运算。例如,要计算今天之后 1000
天的日期,在交互式环境中输入以下代码:
>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2015, 2, 27, 18, 38, 50, 636181)
>>> thousandDays = datetime.timedelta(days=1000)
>>> dt + thousandDays
datetime.datetime(2017, 11, 23, 18, 38, 50, 636181)
首先,生成表示当前时刻的 datetime 对象,保存在 dt 中。然后生成一个timedelta对象,表示 1000 天,保存在 thousandDays 中。dt 与 thousandDays
相加,得到一个 datetime 对象,表示现在之后的 1000 天。Python 将完成日期运算,弄清楚 2015 年 2 月 27 日之后的 1000 天,将是 2017 年 11 月 23
日。这很有用,因为如果要从一个
给定的日期计算 1000 天之后,需要记住每个月有多少天,闰年的因素和其他棘手的细节。datetime 模块为你处理所有这些问题。
利用+和-运算符,timedelta 对象与 datetime 对象或其他 timedelta 对象相加或相减。利用*和/运算符,timedelta
对象可以乘以或除以整数或浮点数。在交互式环境中输入以下代码:
➊ >>> oct21st = datetime.datetime(2015, 10, 21, 16, 29, 0)
➋ >>> aboutThirtyYears = datetime.timedelta(days=365 * 30)
>>> oct21st
datetime.datetime(2015, 10, 21, 16, 29)
>>> oct21st - aboutThirtyYears
datetime.datetime(1985, 10, 28, 16, 29)
>>> oct21st - (2 * aboutThirtyYears)
datetime.datetime(1955, 11, 5, 16, 29)
这里,我们生成了一个 DateTime 对象,表示 2015 年 10 月 21 日➊,以及一个 timedelta 对象,表示大约 30 年的时间(我们假设每年为 365
天)➋。从 oct21st 中减去 aboutThirtyYears,我们就得到一个 datetime 对象,表示 2015 年 10 月 21 日前 30年的一天。从
oct21st 中减去 2 * aboutThirtyYears,得到一个 datetime 对象,表示 2015年 10 月 21 日之前 60 年的一天。
最后
以上就是仁爱砖头为你收集整理的15.4.1 timedelta 数据类型的全部内容,希望文章能够帮你解决15.4.1 timedelta 数据类型所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复