Python timedelta

Python 的 timedelta 函数在 datetime 库中可用。我们使用此 timedelta 函数来计算两个日期之间的差值。或者,您可以使用 timedelta 来预测过去和未来的日期。

在本节中,我们将展示此 datetime timedelta 对象的最多示例,其语法为

datetime.timedelta(days = 0, seconds = 0, microseconds = 0, milliseconds = 0, minutes = 0, hours = 0, weeks = 0)

Python timedelta 示例

这是 datetime timedelta 的一个基本示例。

import datetime
 
print("Microseconds = ", datetime.timedelta(microseconds = 1))
print("Milliseconds = ", datetime.timedelta(milliseconds = 1))
print("Seconds      = ", datetime.timedelta(seconds = 1))
print("Minutes      = ", datetime.timedelta(minutes = 1))
print("Hours        = ", datetime.timedelta(hours = 1))
print("Days         = ", datetime.timedelta(days = 1))
print("Weeks        = ", datetime.timedelta(weeks = 1))
Microseconds = 0:00:00.000001
Milliseconds = 0:00:00.001000
Seconds = 0:00:01
Minutes = 0:01:00
Hours = 1:00:00
Days = 1 day, 0:00:00
Weeks = 7 days, 0:00:00

timedelta 属性

datetime timedelta 对象具有三个特殊属性:min、max 和 resolution。它们分别返回两个不相等对象之间最负、最正和最小的差值。

import datetime
 
print("Minimum = ", datetime.timedelta.min)
print("Maximum = ", datetime.timedelta.max)
print("Resoultion = ", datetime.timedelta.resolution)

min、max 和 resolution 输出返回总天数。

Minimum = -999999999 days, 0:00:00
Maximum = 999999999 days, 23:59:59.999999
Resoultion = 0:00:00.000001

Python timedelta 未来日期示例

我将给您一个简单的示例,用于返回一年后和两年后的日期。我们可以使用 datetime 对象中的此 import timedelta 类来预测未来日期。

在以下所有示例中使用第一行。

from datetime import datetime, timedelta
 
current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_after_one_year = current_dt + timedelta(days = 365)
print("Date and Time After One Year : ", str(dt_after_one_year))
 
dt_after_two_years = current_dt + timedelta(days = 730)
print("Date and Time of Two Years from Now : ", str(dt_after_two_years))

使用 timedelta 函数打印未来日期。

Current Date and Time : 2021-05-02 16:40:59.308324
Date and Time After One Year : 2022-05-02 16:40:59.308324
Date and Time of Two Years from Now : 2023-05-02 16:40:59.308324

timedelta 过去日期

在这里,我们在函数内部减去天数来查找过去的日期。从下面的代码中,days = 730 表示从当前日期减去 730 天。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_two_years = current_dt - timedelta(days = 730)
print("Date and Time before Two Years from Now : ", str(dt_before_two_years))
 
dt_before_six_years = current_dt - timedelta(days = 2190)
print("Date and Time before Six Years from Now : ", str(dt_before_six_years))
 
dt_before_thirty_years = current_dt - timedelta(days = 10950)
print("Date and Time before Thirty Years       : ", str(dt_before_thirty_years))

打印过去日期

Current Date and Time : 2021-05-02 16:41:41.735466
Date and Time before Two Years from Now : 2019-05-03 16:41:41.735466
Date and Time before Six Years from Now : 2015-05-04 16:41:41.735466
Date and Time before Thirty Years : 1991-05-10 16:41:41.735466

timedelta 周

我们在函数内部使用 weeks 参数来查找距离现在 2 周/4 周之前的日期和之后的日期。首先,从 datetime 导入 timedelta。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_two_weeks = current_dt - timedelta(weeks = 2)
print("DateTime before Two Weeks from Now : ", str(dt_before_two_weeks))
 
dt_after_two_weeks = current_dt + timedelta(weeks = 2)
print("DateTime after Two Weeks from Now  : ", str(dt_after_two_weeks))
 
print()
dt_before_four_weeks = current_dt - timedelta(weeks = 4)
print("DateTime before Four Weeks from Now : ", str(dt_before_four_weeks))
 
dt_after_six_weeks = current_dt + timedelta(weeks = 6)
print("DateTime after Six Weeks from Now  : ", str(dt_after_six_weeks))

周输出

Current Date and Time : 2021-05-02 16:42:36.626051
DateTime before Two Weeks from Now : 2021-04-18 16:42:36.626051
DateTime after Two Weeks from Now : 2021-05-16 16:42:36.626051

DateTime before Four Weeks from Now : 2021-04-04 16:42:36.626051
DateTime after Six Weeks from Now : 2021-06-13 16:42:36.626051

Python timedelta 天

我们在 timedelta 函数内部使用 days 参数来返回距现在 2 天之前的日期和之后的日期。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_two_days = current_dt - timedelta(days = 2)
print("Date and Time before Two Days from Now : ", str(dt_before_two_days))
 
dt_after_two_days = current_dt + timedelta(days = 2)
print("Date and Time of Two Days from Now     : ", str(dt_after_two_days))

天输出

Current Date and Time : 2021-05-02 18:18:45.436689
Date and Time before Two Days from Now : 2021-04-30 18:18:45.436689
Date and Time of Two Days from Now : 2021-05-04 18:18:45.436689

在这里,Python 返回距现在两天之前和之后的日期(不是日期和时间)。

dt = datetime.now()
 
current_dt = dt.date()
print("Current Date and Time : ", str(current_dt))
 
dt_before_two_days = current_dt - timedelta(days = 2)
print("Date and Time before Two Days from Now : ", str(dt_before_two_days))
 
dt_after_five_days = current_dt + timedelta(days = 2)
print("Date and Time of Five Days from Now    : ", str(dt_after_five_days))

获取过去和未来的日期

Current Date and Time : 2021-05-02
Date and Time before Two Days from Now : 2021-04-30
Date and Time of Five Days from Now : 2021-05-04

timedelta 小时

此小时代码返回距现在两小时之前和之后的日期和时间。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_two_hours = current_dt - timedelta(hours = 2)
print("Date and Time before Two Hours from Now : ", str(dt_before_two_hours))
 
dt_after_two_hours = current_dt + timedelta(hours = 2)
print("Date and Time of Two Hours from Now     : ", str(dt_after_two_hours))

小时输出

Current Date and Time : 2021-05-02 18:32:28.658184
Date and Time before Two Hours from Now : 2021-05-02 16:32:28.658184
Date and Time of Two Hours from Now : 2021-05-02 20:32:28.658184

timedelta 分钟

使用此功能可返回距现在两分钟之前和六分钟之后的日期和时间。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_two_minutes = current_dt - timedelta(minutes = 2)
print("Date and Time before Two Minutes from Now : ", str(dt_before_two_minutes))
 
dt_after_six_minutes = current_dt + timedelta(minutes = 6)
print("Date and Time After Six Minutes from Now  : ", str(dt_after_six_minutes))

分钟输出

Current Date and Time : 2021-05-02 18:31:35.962983
Date and Time before Two Minutes from Now : 2021-05-02 18:29:35.962983
Date and Time After Six Minutes from Now : 2021-05-02 18:37:35.962983

Python timedelta 秒

在此示例中,我们使用 timedelta 函数返回距现在二十秒之前和九十秒之后的日期和时间。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_twenty_seconds = current_dt - timedelta(seconds = 20)
print("DateTime before Twenty seconds : ", str(dt_before_twenty_seconds))
 
dt_after_ninty_seconds = current_dt + timedelta(seconds = 90)
print("DateTime After Ninty seconds  : ", str(dt_after_ninty_seconds))

秒输出

Current Date and Time : 2021-05-02 16:39:06.479500
DateTime before Twenty seconds : 2021-05-02 16:38:46.479500
DateTime After Ninty seconds : 2021-05-02 16:40:36.479500

timedelta 毫秒

timedelta 函数打印距现在 10000 毫秒之前和 9000000 毫秒之后的日期和时间。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_mseconds = current_dt - timedelta(milliseconds = 10000)
print("DateTime before Ten Thousand Milliseconds : ", str(dt_before_mseconds))
 
dt_after_mseconds = current_dt + timedelta(milliseconds = 900000)
print("DateTime After 900000 Milliseconds  : ", str(dt_after_mseconds))

毫秒输出

Current Date and Time : 2021-05-02 16:38:29.428497
DateTime before Ten Thousand Milliseconds : 2021-05-02 16:38:19.428497
DateTime After 900000 Milliseconds : 2021-05-02 16:53:29.428497

Python timedelta 多个参数

在此示例中,我们使用了多个参数。current_dt – timedelta(days = 2, hours = 2) 返回距现在 2 天 2 小时之前的日期和时间。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_days = current_dt - timedelta(days = 2, hours = 2)
print("Before Date and Time  : ", str(dt_before_days))
 
dt_after_days = current_dt + timedelta(days = 3, hours = 4)
print("After  Date and Time  : ", str(dt_after_days))
 
dt_before_days = current_dt - timedelta(days = 2, hours = 2, minutes = 10)
print("Before Date and Time  : ", str(dt_before_days))
 
dt_after_days = current_dt + timedelta(days = 3, hours = 4, seconds = 20)
print("After  Date and Time  : ", str(dt_after_days))
Python timedelta Example

如果您知道参数的顺序并且按相同顺序使用它们,则您不需要名称。我的意思是,您可以放置参数值。这里,current_dt – timedelta(2, 2) 返回距现在 2 天 2 秒之前的日期和时间。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_days = current_dt - timedelta(2, 2)
print("Before Date and Time  : ", str(dt_before_days))
 
dt_before_days = current_dt - timedelta(2, 2, 2)
print("Before Date and Time  : ", str(dt_before_days))
 
dt_before_days = current_dt - timedelta(2, 2, 0, 2, 0, 2)
print("Before Date and Time  : ", str(dt_before_days))
 
dt_before_days = current_dt - timedelta(2, 2, 0, 2, 0, 2, 1)
print("Before Date and Time  : ", str(dt_before_days))

带参数的输出

Current Date and Time : 2021-05-02 16:36:23.452245
Before Date and Time : 2021-04-30 16:36:21.452245
Before Date and Time : 2021-04-30 16:36:21.452243
Before Date and Time : 2021-04-30 14:36:21.450245
Before Date and Time : 2021-04-23 14:36:21.450245

在这里,我们使用带参数值的 timedelta 来预测未来日期。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_after_days = current_dt + timedelta(3, 3)
print("After  Date and Time  : ", str(dt_after_days))
 
dt_after_days = current_dt + timedelta(3, 3, 3, 3)
print("After  Date and Time  : ", str(dt_after_days))
 
dt_after_days = current_dt + timedelta(3, 3, 0, 0, 3, 3)
print("After  Date and Time  : ", str(dt_after_days))
 
dt_after_days = current_dt + timedelta(3, 0, 0, 4, 2, 3, 1)
print("After  Date and Time  : ", str(dt_after_days))
 
dt_after_days = current_dt + timedelta(3, 0, 0, 0, 0, 0, 5)
print("After  Date and Time  : ", str(dt_after_days))
Current Date and Time : 2021-05-02 16:35:20.057643
After Date and Time : 2021-05-05 16:35:23.057643
After Date and Time : 2021-05-05 16:35:23.060646
After Date and Time : 2021-05-05 19:38:23.057643
After Date and Time : 2021-05-12 19:37:20.061643
After Date and Time : 2021-06-09 16:35:20.057643

Python timedelta 负值

到目前为止,我们已经将当前日期和时间与 timedelta 值相减。但是,您可以使用负值作为参数。例如,current_dt + (days = -35) 返回距现在 35 天之前的日期。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_after_days = current_dt + timedelta(days = -35)
print("After  Date and Time  : ", str(dt_after_days))
 
dt_after_days = current_dt + timedelta(days = -3, hours = -4)
print("After  Date and Time  : ", str(dt_after_days))
 
dt_after_days = current_dt + timedelta(days = -10, hours = -40, minutes = -10)
print("After  Date and Time  : ", str(dt_after_days))
Current Date and Time : 2021-05-02 16:34:19.936194
After Date and Time : 2021-03-28 16:34:19.936194
After Date and Time : 2021-04-29 12:34:19.936194
After Date and Time : 2021-04-21 00:24:19.936194

计算总秒数

此 timedelta 示例打印一个小时、一天、一年和一周的总秒数。

dt = timedelta(hours = 1)
print("One Hour                  = ", dt)
print("Total Seconds in One Hour = ", dt.total_seconds())
 
dt = timedelta(days = 1)
print("One Day                   = ", dt)
print("Total Seconds in One day  = ", dt.total_seconds())
 
dt = timedelta(days = 365)
print("Total Days                = ", dt)
print("Total Seconds in a Year   = ", dt.total_seconds())
 
dt = timedelta(weeks = 1)
print("One Week                  = ", dt)
print("Total Seconds in a Week   = ", dt.total_seconds())
One Hour = 1:00:00
Total Seconds in One Hour = 3600.0
One Day = 1 day, 0:00:00
Total Seconds in One day = 86400.0
Total Days = 365 days, 0:00:00
Total Seconds in a Year = 31536000.0
One Week = 7 days, 0:00:00
Total Seconds in a Week = 604800.0

timedelta strftime

使用此 timedelta 函数来预测未来日期。接下来,我们使用 strftime 函数 来格式化日期和时间。

current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_after = current_dt + timedelta(days = 30)
print("Formatted DateTime  : ", dt_after.strftime('%Y/%M/%d %H:%M:%S %p'))
 
dt_after = current_dt + timedelta(days = 365)
print("Formatted DateTime  : ", dt_after.strftime('%A, %d %b %Y'))
 
dt_after = current_dt + timedelta(days = 365)
print("Formatted DateTime  : ", dt_after.strftime('%A, %d %b %Y %H:%M:%S %p'))

预测未来日期输出

Current Date and Time : 2021-05-02 16:32:18.348961
Formatted DateTime : 2021/32/01 16:32:18 PM
Formatted DateTime : Monday, 02 May 2022
Formatted DateTime : Monday, 02 May 2022 16:32:18 PM

Python 时间差

查找当前日期与 datetime 模块中类返回日期之间的时间差。

from datetime import datetime, timedelta
 
current_dt = datetime.now()
print("Current Date and Time : ", str(current_dt))
 
dt_before_ten_days = current_dt - timedelta(days = 10)
print("DateTime before Ten Days from Now : ", str(dt_before_ten_days))
print("Time Difference = ", current_dt - dt_before_ten_days)
 
dt_after_two_days = current_dt + timedelta(days = 2)
print("DateTime of Two Days from Now     : ", str(dt_after_two_days))
print("Time Difference = ", current_dt - dt_after_two_days)

时间差输出。

Current Date and Time : 2021-05-02 16:30:49.956443
DateTime before Ten Days from Now : 2021-04-22 16:30:49.956443
Time Difference = 10 days, 0:00:00
DateTime of Two Days from Now : 2021-05-04 16:30:49.956443
Time Difference = -2 days, 0:00:00