将当地时间转换为祖鲁时间以便比较时间

时间:2018-11-07 12:22:33

标签: python mysql datetime

我有一个数据库,其中的时间条目格式如下:

2018-11-05T08:58:00Z

我正在尝试生成SQL查询,以将“ now()”与数据库中的时间进行比较,以确定要返回的行。

我正在努力将本地时间(now())“转换”为等效的时间格式,以便可以对数据库值使用<或>操作。

此外,我不确定问题是否有两部分。上面的时间示例不在MySQL的“ Datetime”字段中,而是简单地存储为TEXT,让我怀疑我首先需要将DB条目“转换”为另一种格式?

2 个答案:

答案 0 :(得分:0)

检查此:

import time

time = time.strftime('%Y-%m-%dT%H:%M:%SZ')

print(time)

答案 1 :(得分:0)

以下使用datetime模块的代码对我有用(在Python 3.6中测试):

import datetime

value = "2018-11-05T08:58:00Z"
dt = datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M:%SZ")
# Result is: datetime.datetime(2018, 11, 5, 8, 58)

这会将您的字符串值转换为datetime实例,然后您可以将其与now()进行比较。创建的值应为 naive (表示它们没有相关的时区信息)。

但是,如果您确定自己的now()不是UTC(又称祖鲁时间),则可能需要进行转换。例如,如果您使用的是Django的timezone.now(),而您配置的时区不是UTC,则可能会发生这种情况。在这种情况下,我可能将now()的结果转换为UTC,所以您只需要转换一个值。 pytz module可以轻松处理这种事情。