#python #django #дата
Хочу получить разницу (в секундах) между двумя датами: текущей и даты, взятой из базы:
models.py:
class Tasks(models.Model):
dateAdded = models.DateTimeField(auto_now_add=True)
в консоле:
from phone_book.models import Tasks
this = Tasks.objects.get(id = 50).dateAdded.replace(tzinfo = None)
import datetime
now = datetime.datetime.now() # судя инструкции разница между now и this должна
дать мне необходимую разницу
delta = now - time
В результате объект delta возвращает datetime.timedelta(1, 4451, 467165),
у которого есть аргумент seconds, но почему-то в результате delta.seconds выводится
значение 4451, которое значительно отличается от фактической разницы между двумя датами.
В общем вопрос: как мне найти разницу между двумя датами в секундах, либо подскажите
ссылочку на умный источник.
Спасибо!
Ответы
Ответ 1
>>> import datetime >>> a = datetime.datetime.now() >>> a datetime.datetime(2012, 8, 7, 14, 34, 14, 63000) >>> b = datetime.datetime(2012, 8, 7, 14, 50, 00) >>> b datetime.datetime(2012, 8, 7, 14, 50) >>> c = b - a >>> c datetime.timedelta(0, 945, 937000) >>> c.seconds 945 >>> c.seconds / 60 15 вроде верно всеОтвет 2
Используйте USE_TZ=True, чтобы django использовала бы время, включающее информацию о часовой зоне. Иначе, вычитая наивные datetime объекты, вы можете ошибку на тысячи секунд получить (к примеру, в районе перехода на летнее время). Чтобы получить текущее время: from django.utils import timezone now = timezone.now() datetime.now() возвращает наивный datetime объект -- не используйте его. Имея datetime с установленным правильным tzinfo, можно уже напрямую вычитать: now - then.
Комментариев нет:
Отправить комментарий