首页 > 解决方案 > datetime.strptime 无法转换

问题描述

我正在尝试将日期列表(每个条目都是一个字符串)转换为日期时间对象。

日期格式如下:2018-09-10 24:11

我一直在使用的代码是:

dateTime = []


def makeDateTime(date):
    for entry in date[1:]:
        dateTime.append(datetime.strptime(entry, "%Y-%m-%d %H%M"))
    return dateTime

dt = makeDateTime(date)

我得到的错误是:

ValueError                                Traceback (most recent call last)
<ipython-input-91-5ac073b0f75a> in <module>()
----> 1 dt = datetime.strptime(date[1], "%Y-%m-%d %H%M")

~/anaconda3/lib/python3.6/_strptime.py in _strptime_datetime(cls, data_string, format)
    563     """Return a class cls instance based on the input string and the
    564     format string."""
--> 565     tt, fraction = _strptime(data_string, format)
    566     tzname, gmtoff = tt[-2:]
    567     args = tt[:6] + (fraction,)

~/anaconda3/lib/python3.6/_strptime.py in _strptime(data_string, format)
    363     if len(data_string) != found.end():
    364         raise ValueError("unconverted data remains: %s" %
--> 365                           data_string[found.end():])
    366 
    367     iso_year = year = None

ValueError: unconverted data remains: :14

即使我尝试在循环之外转换一个条目,它似乎也不起作用。任何想法如何解决这一问题?

标签: pythondatetime

解决方案


如果您的日期看起来像'2018-09-10 00:11',则正确的格式字符串"%Y-%m-%d %H:%M"介于:小时和分钟之间。

>>> from datetime import datetime
>>> datetime.strptime('2018-09-10 00:11', '%Y-%m-%d %H:%M')
datetime.datetime(2018, 9, 10, 0, 11)

但是,您仍然无法'2018-09-10 24:11'使用此格式字符串进行解析。时间 24:11 不存在,应该是 00:11。我假设这只是你现在的一个错字。

如果交换分钟和小时,您可以使用'%Y-%m-%d %M:%H'(但我在这一点上猜测。)


推荐阅读