以不同顺序将datetime转换为UTC

时间:2018-04-28 02:39:14

标签: python python-3.x datetime datetime-format

尝试将此日期格式Thu Apr 26 22:51:49 PDT 2018转换为UTC 2018-04-26T22:51:49Z我不关心日期部分,可以将其排除在外。

type(results[0].create_date)

返回

<class 'str'>

到目前为止,我已尝试过这个

print (datetime.strptime((results[0].create_date), "%Y-%m-%dT%H:%M:%SZ"))

但未能解决此错误

ValueError: time data 'Thu Apr 26 22:51:49 PDT 2018' does not match format '%Y-%m-%dT%H:%M:%SZ'

1 个答案:

答案 0 :(得分:1)

您的代码无效的原因是%Y-%m-%dT%H:%M:%SZ字符串模式与results[0].create_date变量中日期的表示方式不匹配。 datetime.strptime尝试将给定字符串与您指定的格式匹配以提取日期时间对象。修改格式化程序可能会有所帮助,但您可能会遇到PDT部分的问题。

我建议使用dateutil.parser模块。您可以执行以下操作:

import dateutil.parser

x = parser.parse(results[0].create_date)
print x 

>>> 2018-04-26 22:51:49

这将返回一个日期时间对象,您可以格式化,但是要按照问题中的建议包含“T”和“Z”。

注意:我已根据您的输入和所需输出完成此操作。但是,您必须注意Thu Apr 26 22:51:49 PDT 2018 in UTC不等于2018-04-26T22:51:49Z,因为PDT比UTC晚7个小时。