如何在 Python 中为日期添加天数?

2025年1月5日 | 阅读6分钟

Python 提供了强大的内置模块来处理与日期和时间相关的操作。其中一项操作就是为日期添加天数,这在许多场景下都非常有用,例如计算任务的到期日期或安排事件。在本文中,我们将使用不同的方法在 Python 中为日期添加天数。

How to Add Days to a Date in Python

使用 timedelta 类

datetime 模块中的 timedelta 类允许您表示一个持续时间,并将其添加到 datetime 对象中以向前移动日期。

示例 1

以下是修改当前日期天数的示例程序。

程序

输出

Original Date: 2023-12-30 16:57:01.837686
New Date (+5 days): 2024-01-04 16:57:01.837686

说明

我们从 datetime 模块导入了 datetime 和 timedelta 类,使用 timedelta() 类修改了 current_date,并打印了 current_date 和新日期。

示例 2

让我们考虑一个使用 timedelta 的示例程序

程序

输出

The future date is: 2023-01-08

说明

首先,我们导入了所需的库。然后,我们创建了一个名为 'calculate_future_date' 的函数。该函数接受字符串格式的日期和整数格式要添加的天数。

接下来,我们使用 'datetime.strptime()' 方法创建了一个 datetime 对象,并使用 'timedelta()' 类将给定的天数加到它上面。之后,我们使用 'strftime()' 方法将修改后的 datetime 对象转换回字符串格式。

最后,该函数返回修改后的日期,然后我们将其打印出来。

使用 relativedelta 类

dateutil 库扩展了 datetime 模块的功能。您可以使用 relativedelta 类进行更复杂的数据操作。

示例 1

让我们再考虑一个修改日期的示例程序。

程序

输出

current date is: 2023-01-01
The future date is: 2023-01-08

说明

我们已经导入了必要的库。在此代码中,我们使用了 relativedelta 类来移动指定的日期。我们创建了一个函数,该函数接受两个输入 - 第一个输入是 'YYYY-MM-DD' 格式的日期,第二个输入是要移动的天数。该函数使用 datetime.strptime 将输入日期转换为 datetime 对象,然后应用 relativedelta 来移动指定的日期。

示例 2

让我们考虑一个通过添加 10 天来修改当前日期的示例程序。

程序

输出

Current Date: 2023-12-31 17:06:30.823978
Date after adding 10 days: 2024-01-10 17:06:30.823978

说明

我们已经导入了修改日期的必要库。然后,我们定义了一个名为 "add_days_to_current_date" 的函数,该函数接受一个整数输入,用于通过添加一定天数来修改日期。借助 "relativedelta" 函数,我们指定了要添加到当前日期的天数。最后,我们打印了原始日期和修改后的日期,以查看差异。

使用 NumPy 库

NumPy 是 Python 中一个非常有影响力的库,主要用于数值运算。虽然 NumPy 没有像 relativedelta 那样用于管理日期的特定函数,但它仍然可以与 datetime 模块一起用于执行基本日期操作。

程序

输出

Original Start Date: 2023-04-20
Date after adding 30 days: 2023-05-20

说明

在此示例中,我们导入了 NumPy 库来执行日期修改。我们创建了一个名为 `calculate_new_date` 的函数,该函数接受一个字符串格式的起始日期和一个整数格式要添加的天数。然后,我们使用 `numpy.datetime64` 创建了一个 NumPy datetime 对象。接下来,我们使用 `numpy.timedelta64()` 将指定的日期加到起始日期上。最后,我们使用 `numpy.astype` 将结果转换为 Python 中的普通 datetime 对象,并打印了起始日期和新日期。

使用 Arrow 库

Arrow 库提供了一个用户友好的 API 来处理日期和时间。它简化了常见操作并提高了日期操作的可读性。

程序

输出

Current Date: 2023-12-31T17:31:26.204416+00:00
Date after adding 5 days: 2024-01-05T17:31:26.204416+00:00

说明

在上面的示例程序中,我们导入了 "arrow" 模块来为当前日期添加天数。首先,我们使用 "arrow.now()" 方法创建了当前日期。接下来,我们使用 "shift()" 方法为当前日期添加了 5 天。最后,我们打印了当前日期和添加 5 天后的日期。

使用 Pandas 库

pandas 库广泛用于数据操作和分析。它拥有强大的 Timestamp 对象和各种与时间相关的函数。

示例

让我们考虑一个例子

程序

输出

Original DataFrame:
        original_date
0 2023-01-01 12:00:00

DataFrame after adding 5 days:
        original_date            new_date
0 2023-01-01 12:00:00 2023-01-06 12:00:00

说明

在此示例程序中,我们导入了 pandas 库,并创建了一个只有一个名为 'original_date' 列的 pandas DataFrame,该列包含一个 datetime 值。然后,我们使用 pd.to_datetime 函数将 'original_date' 列转换为 datetime 格式。之后,我们使用 pd.to_timedelta 为 'original_date' 列添加了 5 天,这创建了一个名为 'new_date' 的新列,其中包含更新后的日期。最后,我们打印了原始日期和新日期。

结论

Python 中有各种库可以用来为日期添加天数。一些常用的库包括内置的 `datetime` 模块以及 NumPy 和 pandas 等外部库。

`datetime` 模块使用 `timedelta` 类提供了一种简单的方法来执行日期算术。另一方面,NumPy 的 `datetime64` 和 `timedelta64` 类型提供了更大的灵活性和对日期的有效数值运算。

如果您需要高级 DataFrame 结构来轻松操作 datetime 列,您可以使用 pandas。它提供了 `pd.to_datetime` 和 `pd.to_timedelta` 等函数来实现此目的。

库的选择取决于您的具体需求和任务的复杂性。每个库在 Python 中进行日期操作时都有其优点。