如何在Python中将字符串1/6/23转换为2023-01-06格式的datetime对象?
在Python中将"1/6/23"格式字符串转换为datetime对象的方法
要把格式为1/6/23(对应2023年1月6日)的字符串转换成2023-01-06格式的datetime/date对象,核心是用datetime模块的strptime方法匹配正确格式符,下面是具体说明和修正后的代码:
关键格式符说明
输入字符串是月/日/两位年份结构,对应格式符为%m/%d/%y:
%m:自动匹配带或不带前导零的月份(如1或01)%d:自动匹配带或不带前导零的日期(如6或06)%y:解析两位年份(如23会自动转换为2023)
原代码存在两处问题:print语句缺少闭合括号,且误用了%Y(四位年份格式符),和输入的两位年份不匹配。
修正后的代码示例
from datetime import datetime chosen_start_date = "1/6/23" # 查看原字符串类型 print(type(chosen_start_date)) # 解析为datetime对象 dt_obj = datetime.strptime(chosen_start_date, "%m/%d/%y") print(type(dt_obj)) # 转换为date对象(仅保留日期部分) date_obj = dt_obj.date() print(type(date_obj)) # 输出指定格式的日期字符串 print(date_obj.strftime("%Y-%m-%d")) # 输出结果:2023-01-06
平台兼容性补充
你原代码里的%#m/%#d是Windows平台下强制去掉前导零的写法,但strptime本身就能识别不带前导零的数字,用%m/%d/%y的跨平台兼容性更好。
内容的提问来源于stack exchange,提问作者amy_hislop
相关产品推荐
相关产品推荐

