我需要增加一个datetime值的月份
next_month = datetime.datetime(mydate.year, mydate.month+1, 1)
当月份为12时,它变成13,并引发错误“month必须在1..12”。(我预计时间会增加)
我想使用timedelta,但它不带month参数。
有一个relativedelta python包,但我不想只为此安装它。
还有一个使用strtotime的解决方案。
time = strtotime(str(mydate));
next_month = date("Y-m-d", strtotime("+1 month", time));
我不想从datetime转换为str再转换为time,再转换为datetime;因此,它仍然是一个图书馆
有人有像使用timedelta一样好的简单的解决方案吗?
好的,通过一些调整和使用timedelta,我们开始:
from datetime import datetime, timedelta
def inc_date(origin_date):
day = origin_date.day
month = origin_date.month
year = origin_date.year
if origin_date.month == 12:
delta = datetime(year + 1, 1, day) - origin_date
else:
delta = datetime(year, month + 1, day) - origin_date
return origin_date + delta
final_date = inc_date(datetime.today())
print final_date.date()
这是一种使用dateutil的relativedelta将一个月添加到日期的简单而甜蜜的方法。
from datetime import datetime
from dateutil.relativedelta import relativedelta
date_after_month = datetime.today()+ relativedelta(months=1)
print('Today: ',datetime.today().strftime('%d/%m/%Y'))
print('After Month:', date_after_month.strftime('%d/%m/%Y'))
Today: 01/03/2013
After Month: 01/04/2013
一个警告:relativedelta(months=1)和relativedelta(month=1)有不同的含义。通过month=1将把原始日期中的月份替换为1月,而通过months=1将在原始日期上增加一个月。
注意:这将需要python-dateutil模块。如果你在Linux上,你需要在终端上运行这个命令来安装它。
sudo apt-get update && sudo apt-get install python-dateutil
说明:在python中添加月份值