首页 > 解决方案 > 以不同的顺序将日期时间转换为 UTC

问题描述

尝试将此日期格式转换Thu Apr 26 22:51:49 PDT 2018为 UTC2018-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'

标签: pythonpython-3.xdatetimedatetime-format

解决方案


您的代码不起作用的原因是字符串模式与变量%Y-%m-%dT%H:%M:%SZ中日期的表示方式不匹配。尝试将给定的字符串与您指定的格式匹配以提取日期时间对象。修改格式化程序在这里可能会有所帮助,但您可能对这部分有困难。results[0].create_datedatetime.strptimePDT

我建议使用 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:49ZPDT 比 UTC 晚 7 小时。


推荐阅读