#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.
Комментариев нет:
Отправить комментарий