Python中使用strptime转换时间字符串报ValueError的问题排查
解决datetime.strptime转换报错的问题
你的代码报错主要有两个核心点:
- 格式符使用错误:你用了小写的
%y,但输入的是4位年份2022,%y仅匹配两位年份(比如22),4位年份必须用大写的%Y - 错误信息里的
2022-09-31本身是无效日期(9月只有30天),不过这是次要问题,先解决格式匹配就能正常转换
修正后的代码如下:
from datetime import datetime stg = "2022-10-31-01:17:46" do = datetime.strptime(stg, '%Y-%m-%d-%H:%M:%S') print(do) # 输出:2022-10-31 01:17:46
关于你疑惑的自定义格式问题:strptime完全支持自定义分隔符的格式,不管是用空格、连字符还是其他符号分隔日期和时间,只要格式符和字符串的每个部分类型对应上就可以。比如你要的%Y-%m-%d-%H:%M:%S这种格式是完全合法的,核心是格式符的大小写和类型要匹配内容(比如年份的%Y/%y,小时的%H(24小时制)/%I(12小时制)等)。
内容的提问来源于stack exchange,提问作者Rumi
相关产品推荐
相关产品推荐

