我怎样才能在 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