Python如何将datetime.date类型转换为YYYY-MM-DD格式字符串?
问题背景
- 处理200万条时间戳索引数据时,需要提取首尾日期转为
YYYY-MM-DD格式用于文件命名 - 两种去重方案性能差异明显:
np.unique(df.index):仅需10秒即可返回结果,输出为datetime.date(2022, 6, 7)格式的日期对象,性能满足要求df.index.strftime('%Y-%m-%d').unique():可直接得到目标格式字符串,但耗时超过5分钟,无法满足性能要求
- 待解决问题:将
datetime.date类型的日期对象快速转换为'2022-06-07'格式的字符串
实现方法
直接使用datetime.date对象自带的isoformat()方法即可,无需额外传入格式参数,执行效率比strftime更高,输出结果天然符合YYYY-MM-DD的补零规则。
单对象转换示例
import datetime d = datetime.date(2022, 6, 7) date_str = d.isoformat() print(date_str) # 输出:2022-06-07
结合业务场景的完整代码
import numpy as np # 高性能去重拿到所有日期对象 unique_dates = np.unique(df.index) # 提取首尾日期转目标格式字符串 start_date = unique_dates[0].isoformat() end_date = unique_dates[-1].isoformat() # 拼接文件名 output_filename = f"时序数据_{start_date}_{end_date}.parquet"
注意:如果索引是带时分秒的
datetime.datetime类型而非纯日期类型,可先调用.date()方法提取日期部分再转字符串,即unique_dates[0].date().isoformat(),避免输出结果带时分秒后缀。
内容的提问来源于stack exchange,提问作者Mainland
相关产品推荐
相关产品推荐

