PySpark如何将年月参数转换为当月最后一个工作日并去除时间
问题修复方案
现有代码问题点
- 变量命名冲突:自定义变量
date覆盖了导入的datetime.date类,会导致后续调用日期方法异常 - 缺少合法的日期类型转换逻辑:
202109是整型年月值,不存在直接可用的date_format方法完成日期对象转换 - 结果默认带时间戳,需要额外调用方法剥离时间部分
修复后完整代码
from pandas.tseries.offsets import BMonthEnd from datetime import datetime # 输入的年月参数 year_month = 202109 # 1. 整型转字符串后解析为当月1号的datetime对象 d = datetime.strptime(str(year_month), '%Y%m') # 2. 计算当月最后一个工作日 offset = BMonthEnd() last_working_day = offset.rollforward(d) # 3. 仅保留日期部分,去除时间 only_date = last_working_day.date() print(only_date)
关键逻辑说明
- 年月转日期:先将整型
202109转为字符串,通过datetime.strptime配合%Y%m格式符,直接解析为当月1号的datetime对象,无需手动拼接日期 - 剥离时间部分:datetime对象调用
.date()方法即可得到仅含年/月/日的date类型结果
内容的提问来源于stack exchange,提问作者Niels
相关产品推荐
相关产品推荐

