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

Python中dateutil.parser解析年月为何返回非1号日期?

问题原因

dateutil.parser.parse 的默认逻辑是:当解析的日期字符串缺少某个字段(比如日、时、分)时,会从当前系统的日期/时间中提取对应缺失的字段值来填充。你传入的"September, 2023"只有年月,没有日,所以方法自动取了当前电脑日期的日数,这就是为什么修改系统日期的日数后,输出结果的日数也跟着变。

你看到的“默认返回当月1日”的描述应该是误解或者过时了,parse 方法的官方定义里,default 参数的默认值就是当前时间,缺失字段会从这里补全。

解决方案

如果需要强制解析结果为当月1日,可以通过 default 参数指定一个基准日期,把日部分固定为1:

from dateutil.parser import parse
import datetime

# 用日为1的基准日期填充缺失的日字段
print(parse("September, 2023", default=datetime.datetime(2023, 1, 1)))

输出结果会是:2023-09-01 00:00:00

如果想写得更通用,避免固定基准日期的年份,可以这样:

from dateutil.parser import parse
import datetime

# 创建一个日固定为1的基准日期,年月会被解析结果覆盖
base_date = datetime.datetime.today().replace(day=1, hour=0, minute=0, second=0, microsecond=0)
print(parse("September, 2023", default=base_date))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:22:40