【问题标题】:How to convert a datetime text into datetime object in Python? [duplicate]如何在 Python 中将日期时间文本转换为日期时间对象? [复制]
【发布时间】:2024-04-30 02:05:02
【问题描述】:

我想将datetime 字符串转换为datetime 对象,该对象将被进一步处理以以不同的格式显示。

字符串在for中,2018-04-24T16:42:17Z

我尝试了以下方法,但它给出了错误。

import datetime
datetime.datetime.strptime('2018-04-24T16:42:17Z', '%b %d %Y %I:%M%p')


Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Python\lib\_strptime.py", line 510, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "D:\Python\lib\_strptime.py", line 343, in _strptime
    (data_string, format))
ValueError: time data '2018-04-24T16:42:17Z' does not match format '%b %d %Y %I:%M%p'

请帮忙。

【问题讨论】:

  • 为什么会被否决?
  • 您尝试使用的格式字符串与您尝试解析的格式相差甚远。看the docs。为什么你认为%b(“月份作为语言环境的缩写名称”)会匹配2018,空格会匹配连字符等等?
  • 但是你应该给出你试图处理的字符串的格式,这显然是从一年开始的。
  • 错误非常简单。您传入的格式(第二个参数)不适用于您正在解析的字符串(第一个参数)。您为什么希望该格式字符串起作用?请分享你的研究。您是否阅读过有关 datetime.strptime() 工作原理的文档?

标签: python python-3.x datetime iso8601 strptime


【解决方案1】:

您的日期时间的字符串表示形式有些不匹配。

试试:

import datetime
print(datetime.datetime.strptime('2018-04-24T16:42:17Z', '%Y-%m-%dT%H:%M:%SZ'))

输出:

2018-04-24 16:42:17

【讨论】: