Страницы

Поиск по вопросам

четверг, 19 марта 2020 г.

Разница между двума датами в секундах в Django

#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.

Комментариев нет:

Отправить комментарий