微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何避免datetime.strptime不匹配的ValueError?

如何解决如何避免datetime.strptime不匹配的ValueError?

该日期该如何精确格式化?

date = '2020-09-05 15:00:1605 Sep 2020,15:00 '
datetime_object = datetime.strptime(date,'%Y-%m-%d,%H:%M:%s')

执行此操作时,出现错误。我究竟做错了什么?日期变量应如何格式化?我认为毫秒已过,我该如何格式化Sep 2020,15:00

我得到的错误

ValueError: time data '2020-09-05 15:00:1605 Sep 2020,15:00 ' does not match format '%Y-%m-%d,%H:%M:%s'

解决方法

问题在于您的日期变量与传递给datetime.strptime的格式不匹配。

以下作品:

date = '2020-09-05 15:00:1605 Sep 2020,15:00 '
datetime_object = datetime.strptime(date[ : 19 ],'%Y-%m-%d %H:%M:%S')

请注意,我通过切片05 Sep 2020,15:00 来删除date,并稍微更改了日期格式字符串以删除逗号和其后的双空格。

现在工作正常:

>>> datetime_object
datetime.datetime(2020,9,5,15,16)
,

我建议使用regex检查输入,如果匹配则使用fromisoformat解析为日期时间。

from datetime import datetime
import re

s = '2020-09-05 15:00:1605 Sep 2020,15:00 '

 # assuming you need this often,run a compile
p = re.compile('[0-9]{4}\-[0-9]{2}\-[0-9]{2}\ [0-9]{2}\:[0-9]{2}\:[0-9]{2}')
m = re.search(p,s)

if m:
    print(repr(datetime.fromisoformat(m.group(0))))
    
# datetime.datetime(2020,16)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。