我怎样才能在 Django 中延长月份
How can I extend month in Django
我正在尝试在 Django 的 expiry_date 字段中添加额外的月份,我已经这样做了
import datetime
now = datetime.datetime.now()
year = now.year
day = now.day
hour = now.hour
minute = now.minute
second = now.second
def add_expiry(a):
month = now.month
print('month : ', month)
current_month = month+a
print('month adding variable : ', current_month)
date = f"{year}/{current_month}/{day}"
time = f"{hour}:{minute}:{second}"
return f"{date} {time}"
print(add_expiry(6))
输出:
month : 6
month adding variable : 12
2021/12/27 11:54:17
但问题是它只会增加一个月但是一年呢我如何处理年份请帮忙。
示例: current_date = 2021-06-27 12:24:52.976751
如果我添加 4 作为参数,它应该 return 2021-10-27 12:24:52.976751
如果我添加 7 作为参数,它应该 return 2022-04-27 12:24:52.976751
注:我不想用dateutil
你可以这样做,你必须计算你选择的是哪 6 个月以及其中的天数,
from datetime import datetime, timedelta
date = datetime.now().date()
months = timedelta(days=30+31+30+31)
# It will equivalent to some 4 months.
print(date + months)
最简单的方法是使用模块 dateutil
:
>>> from dateutil import relativedelta
>>> datetime.datetime.now() + relativedelta.relativedelta(months=1)
datetime.datetime(2021, 7, 27, 14, 30, 53, 111845)
>>> datetime.datetime.now() + relativedelta.relativedelta(months=4)
datetime.datetime(2021, 10, 27, 14, 32, 20, 238002)
你可以这样做:
from datetime import datetime
from dateutil.relativedelta import relativedelta
seven_months = datetime.now() + relativedelta(months=+7)
print(datetime.today())
print(seven_months)
我认为这也应该有效:
from datetime import datetime
def add_month(date: datetime, month: int) -> datetime:
added_month = month + date.month
if added_month > 12:
new_month = added_month % 12
else:
new_month = added_month
year = 0
while(added_month > 12):
year += 1
added_month -= 12
new_date = datetime(date.year+year, new_month, date.day)
return new_date
我正在尝试在 Django 的 expiry_date 字段中添加额外的月份,我已经这样做了
import datetime
now = datetime.datetime.now()
year = now.year
day = now.day
hour = now.hour
minute = now.minute
second = now.second
def add_expiry(a):
month = now.month
print('month : ', month)
current_month = month+a
print('month adding variable : ', current_month)
date = f"{year}/{current_month}/{day}"
time = f"{hour}:{minute}:{second}"
return f"{date} {time}"
print(add_expiry(6))
输出:
month : 6
month adding variable : 12
2021/12/27 11:54:17
但问题是它只会增加一个月但是一年呢我如何处理年份请帮忙。
示例: current_date = 2021-06-27 12:24:52.976751
如果我添加 4 作为参数,它应该 return 2021-10-27 12:24:52.976751
如果我添加 7 作为参数,它应该 return 2022-04-27 12:24:52.976751
注:我不想用dateutil
你可以这样做,你必须计算你选择的是哪 6 个月以及其中的天数,
from datetime import datetime, timedelta
date = datetime.now().date()
months = timedelta(days=30+31+30+31)
# It will equivalent to some 4 months.
print(date + months)
最简单的方法是使用模块 dateutil
:
>>> from dateutil import relativedelta
>>> datetime.datetime.now() + relativedelta.relativedelta(months=1)
datetime.datetime(2021, 7, 27, 14, 30, 53, 111845)
>>> datetime.datetime.now() + relativedelta.relativedelta(months=4)
datetime.datetime(2021, 10, 27, 14, 32, 20, 238002)
你可以这样做:
from datetime import datetime
from dateutil.relativedelta import relativedelta
seven_months = datetime.now() + relativedelta(months=+7)
print(datetime.today())
print(seven_months)
我认为这也应该有效:
from datetime import datetime
def add_month(date: datetime, month: int) -> datetime:
added_month = month + date.month
if added_month > 12:
new_month = added_month % 12
else:
new_month = added_month
year = 0
while(added_month > 12):
year += 1
added_month -= 12
new_date = datetime(date.year+year, new_month, date.day)
return new_date