Python:带毫秒与时区的字符串转datetime格式匹配报错,求排查
问题分析与修正
你的格式匹配表达式存在三个关键问题,我来逐个拆解说明:
- 月份格式符误用:你使用的
%m是匹配数字形式的月份(比如01代表一月),但你的时间戳里是月份英文缩写Jan,对应的正确格式符应该是%b。 - 年份格式符误用:
%y仅能匹配两位年份(比如15对应2015),而你的时间戳是完整的四位年份2015,需要替换为%Y。 - 时区格式符误用:
%Z用于匹配时区名称(比如PST、UTC),但你的时间戳里是时区偏移量-0800,对应的格式符应该是%z。
另外补充一点:%f是匹配微秒(六位数字),你的时间戳里是三位毫秒000,Python会自动补零到六位,这部分无需调整。
修正后的代码如下:
from datetime import datetime timestamp = '05/Jan/2015:17:47:59:000-0800' datetime_object = datetime.strptime(timestamp, '%d/%b/%Y:%H:%M:%S:%f%z') print(datetime_object)
注意:时间戳里偏移量和前面的毫秒之间没有分隔符,所以格式字符串里%f后面直接跟%z即可,不需要额外加符号。
内容的提问来源于stack exchange,提问作者cybertextron
相关产品推荐
相关产品推荐

