gpt4 book ai didi

Python 的人性化 timedelta() 告诉我 minimum_unit 是一个无效的参数吗?

转载 作者:行者123 更新时间:2023-12-04 07:54:18 26 4
gpt4 key购买 nike

我正在尝试打印两个日期之间的大致时差。在此处回答得很好的问题中:Format timedelta to string给出了几个答案,我可以使用其中一个来解决我的问题。
然而 ,我真的很喜欢humanize方法。不幸的是我无法让它工作,因为 minimum_unit关键字参数,列在 documentation 中,给我一个错误:

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论点没有帮助,因为当差异小于一年时,它只强制 timedelta 以月而不是天为单位返回。
任何想法我做错了什么? (如果这是不可能的,那么我将使用一些解决方法。)
编辑:
我正在使用 https://colab.research.google.com/drive/ ,它似乎运行 Python "3.7.10 (default, Feb 20 2021, 21:17:23) [GCC 7.5.0]"
编辑/解决方案:
对不起,我是愚蠢的,但我会留下这个问题。如果有人想删除它,没有异议。 MrFuppes 的评论帮助我意识到这主要是由于谷歌没有使用当前版本。确实,在与 pip list 核对之后,我看到只安装了 0.x 版本,而 3.x 是最新的。运行后 pip install humanize --upgrade我能够使用 precisedelta接受的答案中建议的功能。

最佳答案

使用 humanfriendly

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'

关于Python 的人性化 timedelta() 告诉我 minimum_unit 是一个无效的参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66778465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com