在 Python 中将年份添加到当前日期
Add year(s) to the current date in Python
使用该datetime.replace()
方法将年份添加到当前日期,例如
now.replace(year=now.year + num_of_years)
. 该replace
方法将返回具有相同属性的新日期,但年份除外,该日期将根据提供的值进行更新。
主程序
from datetime import datetime 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) now = datetime.now() print(now) # 👉️ 2022-06-22 20:05:34.004143 result = add_years(now, 1) print(result) # 👉️ 2023-06-22 20:05:34.004143 print(add_years(now, 2)) # 👉️ 2024-06-22 20:05:34.004143
我们使用
datetime.now
方法获取当前本地日期和时间。
该add_years
函数获取我们要添加的日期和年数,并返回更新后的日期。
datetime.replace方法返回一个具有相同属性的
对象,但关键字参数提供的属性除外。
在示例中,我们返回一个新日期,其中月份和日期相同但年份已更新。
由于我们保留了月份的月份和日期,因此我们必须知道二月在闰年有 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: # 👇️ preseve 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) ) now = datetime.now() print(now) # 👉️ 2022-06-22 20:13:38.411871 result = add_years(now, 1) print(result) # 👉️ 2023-06-22 20:13:38.411871
如果您只需要提取操作后的日期,请调用对象date()
上的方法datetime
。
主程序
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) ) now = datetime.now() print(now) # 👉️ 2022-06-22 20:13:38.411871 result = add_years(now, 1) print(result) # 👉️ 2023-06-22 20:13:38.411871 # 👇️ only get a date object print(result.date()) # 👉️ 2023-06-22
如果您需要以某种方式格式化日期,请使用格式化字符串文字。
主程序
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 + ( date(start_date.year + years, 1, 1) - date(start_date.year, 1, 1) ) now = datetime.now() print(now) # 👉️ 2022-06-22 20:13:38.411871 result = add_years(now, 1) print(result) # 👉️ 2023-06-22 20:13:38.411871 # 👇️ format the date print(f'{result:%Y-%m-%d %H:%M:%S}') # 👉️ 2023-06-22 20:13:38.411871
格式化字符串文字 (f-strings) 让我们通过在字符串前加上f
.
确保将表达式括在大括号 –{expression}
中。
格式化字符串文字还使我们能够
在表达式块中使用格式规范迷你语言。