列出 Python 日期时间倒计时(以复数形式表示)

Arn*_*904 5 python datetime date python-3.x

我一直在尝试创建一个函数,使用正确的单词列出日期之间的时间,特别是我希望它能够解释复数。我知道我可以通过 if 语句运行所有数字来做到这一点,但我真的希望找到一种更有效的方法来实现我的目标。

IE:我希望221 days, 1:17:06.996068datetime返回,因为221 days, 1 hour, 17 minutes, and 6.99 seconds.它很重要,它在适当的时候表示日/小时/分钟/秒或天/小时/分钟/秒。

我的代码示例片段:

from datetime import datetime as dt

now = dt.now(tz=None) # Current local computer time
test = dt(2018,3,25,23,0,0) # March 25th, 2018 23h 0m 0s
countdown = test - now
print(countdown) # 2 days, 1:45:00.685739
# Desired outcome: 2 days, 1 hour, 45 minutes, 0.68 seconds.
Run Code Online (Sandbox Code Playgroud)

有没有一种函数可以有效地在单数或复数时间之间进行标记?

DYZ*_*DYZ 2

如果你找不到更好的解决方案,你可以编写一个“复数”函数:

def pl(number,unit):
    return unit + "s" if number > 1 or isinstance(number, float) else unit 

pl(10, "hour")
#'hours'
pl(.75, "sec")
#'secs'
Run Code Online (Sandbox Code Playgroud)

它至少可以让if读者看不到 s。