我有这段代码
class MyModel(models.Model):
date = models.DateTimeField(blank=True, default=datetime.now)
在models.py中。在视图中我得到了对象:
obj = MyModel.objects.get(id=2)
我希望改变今年的日期。怎么做?
答案 0 :(得分:2)
如果你需要确切地说是闰年:
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()
答案 1 :(得分:1)
如果365天足够接近您,最简单的解决方案是:
import datetime
obj = MyModel.objects.get(id=2)
obj.date = obj.date + datetime.timedelta(days=365)
obj.save()
如果您需要更高的精度(例如闰年),请使用mxdatetime包中的相对日期时间:
http://www.egenix.com/products/python/mxBase/mxDateTime/doc/#RelativeDateTime