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

Python使用humanize.naturaldelta传minimum_unit参数报TypeError的解决

需求与问题复现

我需要输出两个日期之间的近似时间差,此前见过StackOverflow上高热度的timedelta字符串格式化方案,本可借助这些方案实现需求,但更偏好humanize库的简洁实现方式。
实际调用时按官方文档说明,给naturaldelta方法传入minimum_unit关键字参数时,程序抛出TypeError报错,复现代码如下:

import datetime as dt
import humanize as hum
d1 = dt.datetime(2003, 3, 17)
d2 = dt.datetime(2007, 9, 21)
hum.naturaldelta(d2 - d1, minimum_unit="days")

报错信息:

TypeError                                 Traceback (most recent call last)
<ipython-input-49-238c3a390a42> in <module>()
      3 d1=dt.datetime(2003,3,17)
      4 d2=dt.datetime(2007,9,21)
----> 5 hum.naturaldelta(d2-d1, minimum_unit="days")

TypeError: naturaldelta() got an unexpected keyword argument 'minimum_unit'
已尝试的无效方案

我曾尝试传入months=True参数,但该参数仅能在时间差不足一年时强制以月为单位返回结果,无法满足需求。

运行环境
  • 平台:Google Colab
  • Python版本:3.7.10 (default, Feb 20 2021, 21:17:23) [GCC 7.5.0]
问题原因

经社区用户MrFuppes提示后才意识到此前的排查方向有误,报错核心原因是环境中预装的humanize为0.x旧版本,而当前官方稳定版本为3.x,旧版本的naturaldelta方法不支持minimum_unit参数。

解决方案
  • 首先通过pip list命令核查当前humanize的版本信息,确认是旧版本后,执行升级命令:pip install humanize --upgrade
  • 升级完成后,即可正常使用带minimum_unit参数的naturaldelta方法,也可使用文档中提及的precisedelta方法实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 19:06:02