首页 > 解决方案 > Django 1.11 - 将时区为 2018-01-01T00:00:00+03:00 的日期时间字符串转换为用于查询集的日期时间对象

问题描述

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

标签: pythondjangopostgresqldatetimedjango-1.11

解决方案


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

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对象,您可以稍后将其用于水。


推荐阅读