次の変数を使用してデータベースから日付を取得しました
{{ i.operation_date }}
私は次のような値を得ました
April 1, 2013
取得できるように、上記に1年を追加する必要があります
April 1, 2014
どうすればこれを行うことができますか?
AGSM の回答python-dateutil
は、パッケージを使用してこの問題を解決する便利な方法を示しています。しかし、そのパッケージをインストールしたくない場合はどうすればよいでしょうか? 次のようにバニラPythonで問題を解決できます。
from datetime import date
def add_years(d, years):
"""Return a date that's `years` years after the date (or datetime)
object `d`. Return the same calendar date (month and day) in the
destination year, if it exists, otherwise use the following day
(thus changing February 29 to March 1).
"""
try:
return d.replace(year = d.year + years)
except ValueError:
return d + (date(d.year + years, 1, 1) - date(d.year, 1, 1))
他の可能性 (2 月 29 日を 2 月 28 日に変更) が必要な場合は、最後の行を次のように変更する必要があります。
return d + (date(d.year + years, 3, 1) - date(d.year, 3, 1))
これは、かなり簡潔であり、外部パッケージを使用していないことがわかったもう1つの回答です。
import datetime as dt
import calendar
# Today, in `dt.date` type
day = dt.datetime.now().date()
one_year_delta = dt.timedelta(days=366 if ((day.month >= 3 and calendar.isleap(day.year+1)) or
(day.month < 3 and calendar.isleap(day.year))) else 365)
# Add one year to the current date
print(day + one_year_delta)