为何datetime.now().isoformat()返回的字符串对time.fromisoformat()无效
问题原因分析
datetime.now().isoformat()生成的是带日期信息的完整ISO时间字符串,格式为YYYY-MM-DDTHH:MM:SS.ffffff,同时包含日期、时间两部分,是datetime类型对应的标准ISO格式。time.fromisoformat()方法仅支持接收纯时间格式的ISO字符串,仅允许输入HH:MM:SS.ffffff或带时区后缀的纯时间内容,不能包含日期部分和分隔符T,因此传入带日期的完整字符串时会触发格式校验错误。
正确实现方式
如果需要获取当前时间的time对象,有两种常见的可行方案:
- 直接调用datetime对象的
time()方法提取时间部分,不需要转字符串再解析,性能更高也更不易出错:
from datetime import datetime, time current_time = datetime.now().time()
- 若必须通过ISO格式字符串转换实现,需要先从完整字符串中拆分出时间部分,移除
T及之前的日期内容:
from datetime import datetime, time full_iso_str = datetime.now().isoformat() time_part = full_iso_str.split('T')[1] current_time = time.fromisoformat(time_part)
内容的提问来源于stack exchange,提问作者Wes Williams
相关产品推荐
相关产品推荐

