Django 1.11 - преобразовать строку даты и времени с часовым поясом 2018-01-01T00: 00: 00 + 03: 00 в объект даты и времени, который будет использоваться для набора запросов - PullRequest
1 голос
/ 07 ноября 2019

Я использую Django 1.11 и Postgres 9.4.

Как я могу преобразовать этот

2018-01-01T00:00:00+03:00

в объект даты и времени, который можно использовать для набора запросов, как показано ниже

Tracking.objects.filter(created_at__gte=input_datetime)

для времени Z Я могу использовать это:

input_datetime = datetime.datetime.strptime("2019-11-01T01:36:56.233032Z", "%Y-%m-%dT%H:%M:%SZ")

но как я могу заставить его работать в течение этого времени (который, кажется, имеет часовой пояс). Я пробовал это, но это не сработало.

input_datetime = datetime.datetime.strptime('2018-01-01T00:00:00+03:00','%Y-%m-%dT%H:%M:%S.%f%z')   

Вот мой model.py

class Tracking(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

Ответы [ 2 ]

2 голосов
/ 07 ноября 2019

Для этого вы можете использовать стандарт Pythons datetime lib. Примерно так:

from datetime import datetime
a = '2018-01-01T00:00:10+03:00'
datetime.datetime(2018, 1, 1, 0, 0, 10, tzinfo=datetime.timezone(datetime.timedelta(seconds=10800)))

Это даст вам datetime.datetime объект, который вы сможете использовать для всего, что позже.

1 голос
/ 07 ноября 2019

Со стандартным модулем datetime это должно работать:

datetime.strptime('2018-01-01T00:00:00+03:00', '%Y-%m-%dT%H:%M:%S%z')

С модулем часового пояса Django самый близкий формат совпадения, который я получил, это:

timezone.datetime.strptime('2018-01-01T00:00:00+0300', '%Y-%m-%dT%H:%M:%S%z')

Этот примерне включает : в смещенной части 2018-01-01T00: 00: 00 + 0300 .

...