Python 3 datetime模块中%b与%B的区别及报错原因解析
问题解答:Python datetime中%b与%B的区别
咱们先从你的问题场景入手解释:你待解析的字符串里月份是Sep——这是月份的缩写形式,而你用的%B是用来匹配月份全称的格式符,自然会解析失败;换成%b(匹配月份缩写)就完全契合,所以能正常运行啦。
接下来详细说下两者的核心区别和使用场景:
%b:对应月份的缩写名称,受系统本地化设置影响。在英文环境下就是Jan、Feb、Sep这类3个字母的缩写;如果是中文环境,可能会显示1月这类短格式。%B:对应月份的完整名称,同样受本地化影响。英文环境下就是January、February、September这类完整单词;中文环境则会显示一月、二月这类全称。
举个更直观的对比例子:
- 如果你的待解析字符串是
"Sat 14 September 2126 00:36:44 +1400",那用你最初定义的fmt_1 = '%a %d %B %Y %H:%M:%S %z'就能正常解析,因为这里的月份是全称September,完美匹配%B; - 而你的原字符串
t1里是缩写Sep,只能用%b来匹配,所以fmt_2能成功运行。
再补充一点:这两个格式符的表现会跟随Python运行环境的locale设置变化,比如切换到法语环境,%b会变成sep(法语九月缩写),%B会变成septembre(法语九月全称),但核心规则不变——缩写对应%b,全称对应%B。
内容的提问来源于stack exchange,提问作者The Sky Peacock
相关产品推荐
相关产品推荐

