You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用safe.parse_datetime将缺日日期统一设为每月15日

解决日期解析后统一改为每月15号的方法

针对需求,有两种直接的实现方式,可根据使用场景选择:

方式一:解析时直接构造15号日期

跳过解析成当月1号的步骤,直接把原始年月字符串拼接上"15",按完整日期格式解析,一步到位得到每月15号的时间对象。

以Python为例:

from datetime import datetime

def get_midmonth_date(date_str):
    # 拼接年月字符串与日期15,生成完整日期字符串
    full_date = date_str + "15"
    return datetime.strptime(full_date, "%Y%m%d")

# 测试示例
print(get_midmonth_date("197601"))  # 输出:1976-01-15 00:00:00
print(get_midmonth_date("198712"))  # 输出:1987-12-15 00:00:00

方式二:解析后调整日期到15号

如果已经通过safe.parse_datetime("%Y%m")得到了当月1号的时间对象,直接调用日期对象的replace()方法,将日部分替换为15即可。

以Python为例:

from datetime import datetime

# 假设这是解析后的日期对象
parsed_date_1 = datetime(1976, 1, 1)
parsed_date_2 = datetime(1987, 12, 1)

# 调整为当月15号
adjusted_date_1 = parsed_date_1.replace(day=15)
adjusted_date_2 = parsed_date_2.replace(day=15)

print(adjusted_date_1)  # 输出:1976-01-15 00:00:00
print(adjusted_date_2)  # 输出:1987-12-15 00:00:00

批量处理(以Pandas为例)

如果是处理批量数据,用Pandas可高效实现:

import pandas as pd

# 原始数据
df = pd.DataFrame({
    "unique_id": [1234, 5678],
    "date_of_birth": ["197601", "198712"]
})

# 方法一:直接构造15号日期解析
df["date_of_birth"] = pd.to_datetime(df["date_of_birth"] + "15", format="%Y%m%d")

# 方法二:先解析再调整
# df["date_of_birth"] = pd.to_datetime(df["date_of_birth"], format="%Y%m")
# df["date_of_birth"] = df["date_of_birth"].apply(lambda x: x.replace(day=15))

print(df)

执行后输出的DataFrame会符合期望格式。

内容的提问来源于stack exchange,提问作者Raven52

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:52:49