Python:将dd-MON-yy格式字符串转换为日期时出错的解决方法
解决Python中dd-MON-yy格式日期字符串解析错误的问题
错误原因
你用错了月份对应的格式符:%m 是匹配数字形式的月份(比如06代表6月),但你的日期字符串里是英文缩写月份JUN,应该用%b来匹配英文月份缩写。%y匹配两位数字年份是正确的,问题核心在月份格式符不匹配。
修正后的代码
如果你的系统默认语言环境是英文,直接用下面的代码即可:
import datetime date_obj = datetime.datetime.strptime('17-JUN-03', '%d-%b-%y') print(date_obj) # 输出:2003-06-17 00:00:00
如果系统默认语言环境不是英文(比如中文),需要先设置英文locale才能解析英文月份缩写:
import datetime import locale # 根据操作系统调整locale参数,Windows上可用'en_US',Linux/macOS可用'en_US.UTF-8' locale.setlocale(locale.LC_TIME, 'en_US.UTF-8') date_obj = datetime.datetime.strptime('17-JUN-03', '%d-%b-%y') print(date_obj)
补充说明
%b会匹配英文月份的缩写(如JUN、Jun,大小写通常不敏感,具体取决于locale设置)%y处理两位年份时,默认规则是:00-69 解析为2000-2069,70-99解析为1970-1999,所以03会被解析为2003
内容的提问来源于stack exchange,提问作者Jim Macaulay
相关产品推荐
相关产品推荐

