将 unicode 转换为 datetime 正确的 strptime 格式

Posted

技术标签:

【中文标题】将 unicode 转换为 datetime 正确的 strptime 格式【英文标题】:Convert unicode to datetime proper strptime format 【发布时间】:2014-02-04 18:18:14 【问题描述】:

我正在尝试将 unicode 对象转换为 datetime 对象。

我通读了文档:http://docs.python.org/2/library/time.html#time.strptime

试过了

datetime.strptime(date_posted, '%Y-%m-%dT%H:%M:%SZ') 

但我收到错误消息ValueError: time data '2014-01-15T01:35:30.314Z' does not match format '%Y-%m-%dT%H:%M:%SZ'

对什么是正确的格式有任何反馈吗?

我很感激时间和专业知识。

【问题讨论】:

您正在阅读错误的文档。虽然time.strptimedatetime.datetime.strptime 显然是相似 函数,但它们(在2.6+ 上)完全分开实现,并且有不同的列表说明它们可以处理的原因。 (time 只是调用您平台的 C 库;datetime 手动处理其他格式指令,即使您的平台没有。) 【参考方案1】:

你可以解析微秒:

from datetime import datetime
date_posted = '2014-01-15T01:35:30.314Z'
datetime.strptime(date_posted, '%Y-%m-%dT%H:%M:%S.%fZ')

【讨论】:

我认为如果平台没有,则手动制作datetime 处理%f 仅在 3.1+ 中添加,但看起来它也被向后移植到 2.6。不错。【参考方案2】:

一种选择是让dateutil 完成这项工作:

>>> from dateutil import parser
>>> parser.parse('2014-01-15T01:35:30.314Z')
datetime.datetime(2014, 1, 15, 1, 35, 30, 314000, tzinfo=tzutc())

【讨论】:

以上是关于将 unicode 转换为 datetime 正确的 strptime 格式的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Long 类型的 datetime 转换为具有正确时区的 DateTime

时间转换py.datetime & pd.to_datetime

如何将 Python 2 unicode() 函数转换为正确的 Python 3.x 语法

在反序列化期间将 JSON 日期转换为 .NET DateTime 的正确方法

如何使用 Python 将 UTC Unicode 更改为 Epoch

如何将string 类型字段转换为datetime类型字段