bash - 将天值汇总为年、月和剩余天数

nat*_*ath 6 bash date

是否有任何简单的方法可以将(1327 天)之类的天值汇总为以下格式:

xx years; xx month; xx days
Run Code Online (Sandbox Code Playgroud)

不必为每个值使用单独的变量。
最好用一个命令。

Sté*_*las 10

对于包含数月或数年的持续时间,必须参考特定日期,因为不同的月份或不同的年份具有不同的长度。

要知道从现在到 1327 天的年/月/天,使用dateutils

$ ddiff -f '%Y years, %m months, %d days' today "$(dadd now 1327)"
3 years, 7 months, 19 days
Run Code Online (Sandbox Code Playgroud)

(有时您可能会发现ddiff可用datediffdateutils.ddiff; 与 相同dadd)。

这就是我现在在 2017-09-25 得到的(因为那是从 2017-09-25 到 2021-05-14)。如果我在 2018-03-01 运行它,我会得到:

3 years, 7 months, 17 days
Run Code Online (Sandbox Code Playgroud)

因为那是从 2018-03-01 到 2021-10-18。

在 2018-03-01 天,1327 天会给3 years, 7 months, 16 days.

更多信息,请参阅如何使用 GNU 工具计算和格式化日期持续时间,而不是结果日期?