Подтвердить что ты не робот

Как печатать в следующем году с текущего года в Python

Как я могу напечатать следующий год, если текущий год указан в python, используя простейший код, возможно, в одной строке, используя модуль datetime.

4b9b3361

Ответ 1

Оба объекта date и datetime имеют атрибут 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 с годом, приращенным на единицу:

>>> 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 - 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)