Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django DateTimeField和视图中的更改日期_Django - Fatal编程技术网

Django DateTimeField和视图中的更改日期

Django DateTimeField和视图中的更改日期,django,Django,我有这个密码 class MyModel(models.Model): date = models.DateTimeField(blank=True, default=datetime.now) 在models.py中。在视图中,我得到了对象: obj = MyModel.objects.get(id=2) 我希望更改下一年的日期。如何做到这一点?如果365天对您来说已经足够近了,那么最简单的解决方案是: import datetime obj = MyModel.objects.

我有这个密码

class MyModel(models.Model):
    date = models.DateTimeField(blank=True, default=datetime.now)
在models.py中。在视图中,我得到了对象:

obj = MyModel.objects.get(id=2)

我希望更改下一年的日期。如何做到这一点?

如果365天对您来说已经足够近了,那么最简单的解决方案是:

import datetime

obj = MyModel.objects.get(id=2)
obj.date = obj.date + datetime.timedelta(days=365)
obj.save()
如果需要更高的精度(例如闰年),请使用mxdatetime软件包中的相对日期时间:


如果365天对您来说已经足够近了,最简单的解决方案是:

import datetime

obj = MyModel.objects.get(id=2)
obj.date = obj.date + datetime.timedelta(days=365)
obj.save()
如果需要更高的精度(例如闰年),请使用mxdatetime软件包中的相对日期时间:


如果您需要准确计算闰年:

import datetime, calendar

obj = MyModel.objects.get(id=2)
next_date = obj.date + datetime.timedelta(days=365)
if calendar.isleap(obj.date.year) and obj.date <= datetime.datetime(obj.date.year, 2, 29) or \
   calendar.isleap(next_date.year) and obj.date > datetime.datetime(obj.date.year, 2, 28):
    next_date += datetime.timedelta(days=1)
obj.date = next_date
obj.save()
导入日期时间、日历
obj=MyModel.objects.get(id=2)
下一个日期=obj.date+datetime.timedelta(天=365)
如果calendar.isleap(obj.date.year)和obj.date.datetime.datetime(obj.date.year,2,28):
next_date+=datetime.timedelta(天=1)
obj.date=下一个日期
obj.save()

如果您需要准确计算闰年:

import datetime, calendar

obj = MyModel.objects.get(id=2)
next_date = obj.date + datetime.timedelta(days=365)
if calendar.isleap(obj.date.year) and obj.date <= datetime.datetime(obj.date.year, 2, 29) or \
   calendar.isleap(next_date.year) and obj.date > datetime.datetime(obj.date.year, 2, 28):
    next_date += datetime.timedelta(days=1)
obj.date = next_date
obj.save()
导入日期时间、日历
obj=MyModel.objects.get(id=2)
下一个日期=obj.date+datetime.timedelta(天=365)
如果calendar.isleap(obj.date.year)和obj.date.datetime.datetime(obj.date.year,2,28):
next_date+=datetime.timedelta(天=1)
obj.date=下一个日期
obj.save()

好的,修复了。不幸的是,现在没有那么简单,但仍然比使用外部库(IMHO)更好。好的,修复了。不幸的是,现在没有这么简单,但仍然比使用外部库(IMHO)好。