如何使用Python将如221201的数字序列转换为日期格式?
将YYMMDD格式的数字序列转换为Python日期对象
方法1:使用Python标准库datetime
Python自带的datetime模块是处理这类固定格式日期的最可靠方案,通过strptime()方法可以直接指定格式解析字符串:
from datetime import datetime # 单个日期转换 date_str = "221201" date_obj = datetime.strptime(date_str, "%y%m%d").date() print(date_obj) # 输出:2022-12-01 # 批量转换列表中的日期字符串 date_str_list = ["221201", "230115", "210630"] date_list = [datetime.strptime(s, "%y%m%d").date() for s in date_str_list] print(date_list) # 输出:[datetime.date(2022, 12, 1), datetime.date(2023, 1, 15), datetime.date(2021, 6, 30)]
格式参数说明:
%y:两位数字年份(00-99),默认映射规则为00-49对应2000-2049,50-99对应1950-1999%m:两位数字月份(01-12)%d:两位数字日期(01-31)
如果需要自定义年份映射(比如把99映射为2099而非1999),可以手动拆分字符串处理:
date_str = "991231" year = int(date_str[:2]) + 2000 # 强制映射到20xx年 month = int(date_str[2:4]) day = int(date_str[4:6]) custom_date = datetime(year, month, day).date() print(custom_date) # 输出:2099-12-31
方法2:使用dateutil库(修正解析参数)
你之前使用dateutil失败的原因是未明确解析规则,默认情况下dateutil.parser会误判格式。只需添加yearfirst=True参数,告知解析器优先识别前两位为年份:
from dateutil import parser date_str = "221201" date_obj = parser.parse(date_str, yearfirst=True).date() print(date_obj) # 输出:2022-12-01
内容的提问来源于stack exchange,提问作者MTMP491
相关产品推荐
相关产品推荐

