Python timedelta
时间:2020-02-23 14:43:36 来源:igfitidea点击:
Python timedelta对象用于以简单的方式执行日期时间操作。
timedelta类是datetime模块的一部分。
Pythoon timedelta
Python timedelta对象代表持续时间。
我们可以使用以下工厂方法创建其对象。
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
请注意,timedelta()函数采用关键字参数。
所有参数都是可选的,默认为0。
参数可以是整数或者浮点数,并且可以是正数或者负数。
timedelta对象使用基本运算符支持数学运算,例如加,减,乘等,因此使用起来非常简单。
它通常用于获取具有某些增量日期和时间的datetime对象。
Python timedelta示例
让我们看一些使用timedelta对象获取未来日期和过去日期的示例。
from datetime import datetime, timedelta current_datetime = datetime.now() # future dates one_year_future_date = current_datetime + timedelta(days=365) print('Current Date:', current_datetime) print('One year from now Date:', one_year_future_date) # past dates three_days_before_date = current_datetime - timedelta(days=3) print('Three days before Date:', three_days_before_date)
输出:
Current Date: 2016-09-18 12:33:30.656394 One year from now Date: 2019-09-18 12:33:30.656394 Three days before Date: 2016-09-15 12:33:30.656394
带有日期和时间的Python timedelta
Python timedelta也支持对date对象进行加减。
dt = current_datetime.date() print('Current Date:', dt) dt_tomorrow = dt + timedelta(days=1) print('Tomorrow Date:', dt_tomorrow)
输出:
Current Date: 2016-09-18 Tomorrow Date: 2016-09-19
但是,timedelta不支持与时间对象进行相同的操作。
tm = current_datetime.time() print('Current Time:', tm) tm_after_30_mins = tm + timedelta(minutes=30)
上面的代码将产生以下错误消息。
TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'
Python timedelta属性
Python timedelta类具有三个属性。
print(timedelta.max) print(timedelta.min) print(timedelta.resolution)
输出:
999999999 days, 23:59:59.999999 -999999999 days, 0:00:00 0:00:00.000001
Python timedelta总秒数
Python timedelta对象total_seconds()方法返回秒总数。
print('Seconds in an year:', timedelta(days=365).total_seconds())
Python timedelta操作
让我们看一下timedelta对象之间的更多操作。
ct = current_datetime + timedelta(seconds=60) - timedelta(seconds=60) print(current_datetime == ct) ct = current_datetime + timedelta(seconds=10) * 6 print('Current Time:', current_datetime) print('One Min from Current Time:', ct) print('Timedelta absolute value:', abs(timedelta(days=-10))) print('Timedelta String Representation:', str(timedelta(days=1, seconds=30, hours=10, milliseconds=300))) print('Timedelta Object Representation:', repr(timedelta(days=1, seconds=30, hours=10, milliseconds=300)))
输出:
True Current Time: 2016-09-18 12:47:28.331197 One Min from Current Time: 2016-09-18 12:48:28.331197 Timedelta absolute value: 10 days, 0:00:00 Timedelta String Representation: 1 day, 10:00:30.300000 Timedelta Object Representation: datetime.timedelta(days=1, seconds=36030, microseconds=300000)