如何在Python(Django)中格式化字符串时间?解决转换报错问题
解决Django中时间字符串转换的格式不匹配问题
错误原因
你遇到的ValueError是因为解析时间时用的格式%m/%d/%y %H:%M:%S和输入字符串2022-09-13 11:00:00.996795+00完全不匹配。输入字符串包含4位年份、微秒和时区偏移,必须用对应格式化指令才能正确解析。
修正方案
- 正确解析时间字符串:使用
%Y-%m-%d %H:%M:%S.%f%z格式,对应输入的年-月-日 时:分:秒.微秒+时区结构。 - 格式化目标输出:用
%I:%M %p生成12小时制的“时:分 am/pm”格式,其中%I是12小时制小时,%p表示上午/下午标识。
修正后的代码
from datetime import datetime def time_slots(self, string_time='2022-09-13 11:00:00.996795+00'): # 解析时间字符串,匹配输入格式 start_time = datetime.strptime(string_time, '%Y-%m-%d %H:%M:%S.%f%z') # 格式化为目标样式,转小写得到am/pm formatted_start_time = start_time.strftime('%I:%M %p').lower() return formatted_start_time
关键格式说明
%Y:4位年份(如2022)%m:2位月份(如09)%d:2位日期(如13)%f:6位微秒(如996795)%z:时区偏移(如+00)%I:12小时制的小时数(01-12)%p:AM/PM标识,通过.lower()转为小写的am/pm
内容的提问来源于stack exchange,提问作者Ahmed Yasin
相关产品推荐
相关产品推荐

