在 Python 中将年份添加到日期

在 Python 中将年份添加到日期

Add year(s) to a date in Python

使用该datetime.replace()方法将年份添加到日期,例如
start_date.replace(year=start_date.year + years). replace方法将返回具有相同属性的新日期,但年份除外,该日期将根据提供的值进行更新。

主程序
from datetime import datetime, date def add_years(start_date, years): try: return start_date.replace(year=start_date.year + years) except ValueError: # 👇️ preseve calendar day (if Feb 29th doesn't exist, set to 28th) return start_date.replace(year=start_date.year + years, day=28) # ✅ add years to a date my_str = '09-14-2023' # 👉️ (mm-dd-yyyy) date_1 = datetime.strptime(my_str, '%m-%d-%Y') print(date_1) # 👉️ 2023-09-14 00:00:00 result_1 = add_years(date_1, 3) print(result_1) # 👉️ 2026-09-14 00:00:00 # ----------------------------------------------- # ✅ add years to current date current_date = datetime.today() print(current_date) # 👉️ 2022-06-20 14:45:55.418010 result_2 = add_years(current_date, 2) print(result_2) # 👉️ 2024-06-20 14:45:55.418010 # ----------------------------------------------- # ✅ using date instead of datetime date_3 = date(2023, 9, 7) print(date_3) # 👉️ 2023-09-07 result_3 = add_years(date_3, 5) print(result_3) # 👉️ 2028-09-07 # ----------------------------------------------- # ✅ add years to current date (using date instead of datetime) date_4 = date.today() print(date_4) # 👉️ 2022-06-20 result_4 = add_years(date_4, 6) print(result_4) # 👉️ 2028-06-20

add_years函数获取我们要添加的日期和年数,并返回更新后的日期。

datetime.replace方法返回一个具有相同属性的

对象,但关键字参数提供的属性除外。

在示例中,我们返回一个新日期,其中月份和日期相同但年份已更新。

第一个示例使用
datetime.strptime()
方法获取与提供的日期字符串对应的日期时间对象,并根据指定格式进行解析。

一旦我们有了datetime对象,我们就可以使用replace()方法来替换年份。

主程序
from datetime import datetime, date def add_years(start_date, years): try: return start_date.replace(year=start_date.year + years) except ValueError: # 👇️ preserve calendar day (if Feb 29th doesn't exist, set to 28th) return start_date.replace(year=start_date.year + years, day=28) # ✅ add years to a date my_str = '09-14-2023' # 👉️ (mm-dd-yyyy) date_1 = datetime.strptime(my_str, '%m-%d-%Y') print(date_1) # 👉️ 2023-09-14 00:00:00 result_1 = add_years(date_1, 3) print(result_1) # 👉️ 2026-09-14 00:00:00

示例中的日期字符串格式为mm-dd-yyyy.

如果您有一个以不同方式格式化的日期字符串,请使用
此文档表
来查找您应该作为第二个参数传递给该
strptime()方法的格式代码。

由于我们保留了月份的月份和日期,因此我们必须知道二月在闰年有 29 天,在非闰年有 28 天。

当前日期可能是 2 月 29 日,添加 X 年返回非闰年,其中 2 月 29 日不是有效日期。

在这种情况下,我们更新年份并将该月的日期设置为 28 日。

主程序
def add_years(start_date, years): try: return start_date.replace(year=start_date.year + years) except ValueError: # 👇️ preserve calendar day (if Feb 29th doesn't exist, set to 28th) return start_date.replace(year=start_date.year + years, day=28)

如果当年不存在 2 月 29 日,另一种方法是将日期设置为 3 月 1 日。

主程序
from datetime import datetime, date def add_years(start_date, years): try: return start_date.replace(year=start_date.year + years) except ValueError: # 👇️ preserve calendar day (if Feb 29th doesn't exist # set to March 1st) return start_date + ( date(start_date.year + years, 1, 1) - date(start_date.year, 1, 1) ) # ✅ add years to a date my_str = '02-29-2024' # 👉️ (mm-dd-yyyy) date_1 = datetime.strptime(my_str, '%m-%d-%Y') print(date_1) # 👉️ 2024-02-29 00:00:00 result_1 = add_years(date_1, 3) print(result_1) # 👉️ 2027-03-01 00:00:00

第二个示例将年份添加到当前日期。

主程序
from datetime import datetime, date def add_years(start_date, years): try: return start_date.replace(year=start_date.year + years) except ValueError: return start_date.replace(year=start_date.year + years, day=28) current_date = datetime.today() print(current_date) # 👉️ 2022-06-20 14:45:55.418010 result_2 = add_years(current_date, 2) print(result_2) # 👉️ 2024-06-20 14:45:55.418010

datetime.today()方法返回当前

本地日期时间。

第三个示例在将年份添加到日期时使用date()类而不是类。datetime

主程序
from datetime import date def add_years(start_date, years): try: return start_date.replace(year=start_date.year + years) except ValueError: return start_date.replace(year=start_date.year + years, day=28) date_3 = date(2023, 9, 7) print(date_3) # 👉️ 2023-09-07 result_3 = add_years(date_3, 5) print(result_3) # 👉️ 2028-09-07

第四个示例将年份添加到date表示当前日期的对象。

主程序
from datetime import datetime, date def add_years(start_date, years): try: return start_date.replace(year=start_date.year + years) except ValueError: return start_date.replace(year=start_date.year + years, day=28) # ✅ add years to current date (using date instead of datetime) date_4 = date.today() print(date_4) # 👉️ 2022-06-20 result_4 = add_years(date_4, 6) print(result_4) # 👉️ 2028-06-20

date.today

方法返回一个
表示当前本地日期的对象
date

发表评论