在当前日期加一年PYTHON
我已经使用以下变量从数据库中获取了一个日期
{ { i.operation_date }}
我得到了一个像
April 1, 2013
我需要在上面加上一年,这样我才能得到
April 1, 2014
请提出建议,我该怎么做?
user2106353 asked 2020-02-05T20:29:30Z
7个解决方案
100 votes
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))
Gareth Rees answered 2020-02-05T20:29:54Z
46 votes
您可以使用Python-dateutil的datetime来增加.replace()对象,同时保持对leap年和月长之类的内容的敏感性。 如果已有的话,Python-dateutil与matplotlib打包在一起。 您可以执行以下操作:
from dateutil.relativedelta import relativedelta
new_date = old_date + relativedelta(years=1)
(此答案由@Max提供给类似的问题)。
但是,如果您的日期是字符串(即还不是datetime对象),则可以使用datetime进行转换:
from datetime import datetime
from dateutil.relativedelta import relativedelta
your_date_string = "April 1, 2012"
format_string = "%B %d, %Y"
datetime_object = datetime.strptime(you