Python';s humanize timedelta()告诉我最小_单位是无效参数?

Python';s humanize timedelta()告诉我最小_单位是无效参数?,python,datetime,timedelta,humanize,Python,Datetime,Timedelta,Humanize,我正在打印两个日期之间的大致时差。在这里回答得很好的问题中:给出了几个答案,我可以用其中一个来解决我的问题 然而,我非常喜欢人性化的方法。不幸的是,我无法使其工作,因为中列出的最小单位关键字参数给了我一个错误: 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

我正在打印两个日期之间的大致时差。在这里回答得很好的问题中:给出了几个答案,我可以用其中一个来解决我的问题

然而,我非常喜欢
人性化的方法。不幸的是,我无法使其工作,因为中列出的
最小单位
关键字参数给了我一个错误:

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'
将日期时间导入为dt
导入人性化为哼哼
d1=日期时间(2003,3,17)
d2=dt.datetime(2007,9,21)
hum.天然乳酸(d2-d1,最小单位=天)
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
3 d1=日期时间(2003,3,17)
4d2=dt.datetime(2007,9,21)
---->5 hum.天然乳酸(d2-d1,最小单位为天)
TypeError:naturaldelta()获得意外的关键字参数“最小单位”
注意:
months=True
参数没有帮助,因为当差值小于一年时,它只强制以月份而不是天数返回timedelta

你知道我做错了什么吗?(如果这是不可能的,那么我将使用一些变通方法。)

编辑:

我正在使用,它似乎运行Python“3.7.10(默认,2021年2月20日,21:17:23)[GCC 7.5.0]”

编辑/解决方案:


对不起,我很愚蠢,但我会留下这个问题。如果有人想移除它,没有人反对。Fuppes先生的评论让我意识到这主要是因为谷歌没有使用当前版本。事实上,在检查了
pip列表之后,我发现只安装了0.x版本,而3.x是最新版本。运行
pip install humanize--upgrade
后,我能够使用公认答案中建议的
precisedelta
功能。

使用
人性化

import datetime
import humanfriendly

d1 = datetime.datetime(2003, 3, 17)
d2 = datetime.datetime(2007, 9, 21)
date_delta = d2 - d1

# there is no month
humanfriendly.format_timespan(date_delta)
>>> '4 years, 27 weeks and 4 days'
或者可能是这样:

from humanize.time import precisedelta

precisedelta(date_delta, minimum_unit='days')
>>> '4 years, 6 months and 5.84 days'
precisedelta(d2-d1, minimum_unit='days', suppress=['months'])
>>> '4 years and 188.84 days'
precisedelta(d2-d1, minimum_unit='days', format="%0.0f")
>>> '4 years, 6 months and 6 days'

我得到了一个不同的错误(尽管结果相同):
ValueError:不支持最小单位“天”
。在src代码中,错误为。对我来说,这看起来像是一个黑客/工作环境,不知道为什么会这样。也许你应该这样做。几个月对你来说是最小的单位吗?不,只是秒或更小(更高的分辨率)。而且它不会改变输出;只是说“4年”。这就是我希望将粒度设置为“年”的结果。我想说还有改进的余地。你的评论对解决问题有很大帮助,非常感谢!我在我的帖子中添加了一个编辑。谢谢!我转到了precisedelta。我还发现,我的问题是由于谷歌使用了一个过时的软件包,这对我来说似乎非常奇怪,但无论如何。