Django 1.11-将时区为2018-01-01T00:00:00 + 03:00的datetime字符串转换为datetime对象以用于queryset

时间:2019-11-07 14:59:58

标签: python django postgresql datetime django-1.11

我正在使用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')   

这是我的模型。py

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

2 个答案:

答案 0 :(得分:2)

您实际上可以为此使用Pythons标准datetime库。这样的东西:

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 :(得分:1)

使用标准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 中不包含: