You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 14:52:49