DateTimeField и изменение даты в поле зрения - PullRequest
0 голосов
/ 13 июля 2011

У меня есть этот код

class MyModel(models.Model):
    date = models.DateTimeField(blank=True, default=datetime.now)

в models.py.В связи с этим я получаю объект:

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

и хочу изменить дату на следующий год.Как это сделать?

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

Если вам нужно быть точным с високосными годами:

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 голос
/ 13 июля 2011

Если для вас достаточно 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...