Как я могу напечатать следующий год, если текущий год указан в python, используя простейший код, возможно, в одной строке, используя модуль datetime.
Как печатать в следующем году с текущего года в Python
Ответ 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)