43

如果使用最简单的代码在 python 中给出当前年份,我如何打印下一年,可能使用 datetime 模块在一行中。

4

2 回答 2

113

日期和日期时间对象都有一个year属性,它是一个数字。只需添加 1:

>>> from datetime import date
>>> print date.today().year + 1
2013

如果变量中有当前年份,只需直接加 1,无需费心使用 datetime 模块:

>>> year = 2012
>>> print year + 1
2013

如果您在字符串中有日期,只需选择代表年份的 4 位数字并将其传递给int

>>> date = '2012-06-26'
>>> print int(date[:4]) + 1
2013

年份算术非常简单,将其设为整数并加 1。没有比这更简单的了。

但是,如果您使用的是整个日期,并且您需要相同的日期但一年后,请使用组件创建一个新date对象,其中年份递增 1:

>>> today = date.today()
>>> print date(today.year + 1, today.month, today.day)
2013-06-26

或者您可以使用该.replace函数,该函数返回您指定的字段已更改的副本:

>>> print today.replace(year=today.year + 1)
2013-06-26

today请注意,当闰年的 2 月 29 日时,这可能会有点棘手。因此,绝对的、故障安全的正确方法是:

def nextyear(dt):
   try:
       return dt.replace(year=dt.year+1)
   except ValueError:
       # February 29th in a leap year
       # Add 365 days instead to arrive at March 1st
       return dt + timedelta(days=365)
于 2012-06-26T11:38:40.153 回答
0

这是另一种简单的方法...

import datetime

x = datetime.datetime.now()

print(x.year+1)
于 2020-07-23T02:43:50.350 回答