maxpoitn2point
@maxpoitn2point
Как всегда, в своем репертуаре

Как правильно сравнить дату и время полученное из поля БД в Django?

Пытаюсь написать функцию, которая будет проверять наступил ли следующий час, с момента создания записи. т.е.
если запись была создана в 12:43 и проверять в 13:05 функция должна возвращать истину, если нет ложь.
основная проблема лежит в не понимании какой тип данных хранится в свойстве объекта ar строка или объект Datetime
метка времени добавляется автоматически через указание auto_now = True
timestamp = models.DateTimeField(auto_now=True)
ar = Article.objects.get(pk=1)
ar.timestamp = ???

Если смотреть в самой базе там строка "2020-09-04T13:24:22.717154Z"
Итак вопрос:
Если там хранится строка, то для получения только значение часа получится использовать только регулярные выражения? или есть другие более удобные инструменты?
Если там объект Datetime, то как получить только часы без даты и минут.

С какой стороны подойти к этой проблеме?
  • Вопрос задан
  • 758 просмотров
Решения вопроса 1
@zexer
https://docs.python.org/3/library/datetime.html
Используете метод datetime.strptime чтобы строку конвертировать в объект datetime, там можно задать любой формат парсинга строки.
Когда сделаете это, можете с этим объектом делать что угодно, например извлекать час.
import datetime
string = "2020-09-04T13:24:22.717154Z"

string_as_date = datetime.datetime.strptime(string, '%Y-%m-%dT%H:%M:%S.%fZ')
string_as_date 
# Out: datetime.datetime(2020, 9, 4, 13, 24, 22, 717154)
string_as_date.hour
# Out: 13

UPD
from dateutil import parser
string = "2020-09-04T13:24:22.717154Z"
string_as_date = parser.isoparse(string)
string_as_date.hour
# Out: 13
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы