python - 使用 Python 减去两个 UNIX 时间戳时,如何产生人类可读的差异?

这个问题类似to this question about subtracting dates with Python ,但不完全相同。我不是在处理字符串,我必须找出两个纪元时间戳之间的差异,并以人类可读的格式产生差异。

例如:

32 Seconds
17 Minutes
22.3 Hours
1.25 Days
3.5 Weeks
2 Months
4.25 Years

或者,我想这样表达差异:

4 years, 6 months, 3 weeks, 4 days, 6 hours 21 minutes and 15 seconds

我认为我不能使用 strptime,因为我正在处理两个纪元日期的差异。我可以写一些东西来做到这一点,但我很确定已经写了一些我可以使用的东西。

什么模块合适?我只是在 time 中遗漏了什么吗?我的 Python 之旅才真正开始,如果这确实是重复的,那是因为我没有弄清楚要搜索什么。

附录

为了准确,我最关心的是当年的日历。

最佳答案

您可以使用精彩的 dateutil 模块及其 relativedelta 类:

import datetime
import dateutil.relativedelta

dt1 = datetime.datetime.fromtimestamp(123456789) # 1973-11-29 22:33:09
dt2 = datetime.datetime.fromtimestamp(234567890) # 1977-06-07 23:44:50
rd = dateutil.relativedelta.relativedelta (dt2, dt1)

print "%d years, %d months, %d days, %d hours, %d minutes and %d seconds" % (rd.years, rd.months, rd.days, rd.hours, rd.minutes, rd.seconds)
# 3 years, 6 months, 9 days, 1 hours, 11 minutes and 41 seconds

这不算数周,但这应该不会太难添加。

https://stackoverflow.com/questions/6574329/

相关文章:

java - 格式化带前导符号的数字

php - 在 PHP 中打印货币数字格式

c - 'printf' 在 C 中带有前导零

c - 在 C 中打印十六进制的前导零

c# - 如何将 bool 值一般格式化为是/否字符串?

java - Eclipse 在哪里存储首选项?

java - 最好的 Eclipse 代码格式化程序?

c# - 在 C# 中,将字符串格式化为 XML 的最佳方法是什么?

java - 如何在 Java 中计算时间跨度并格式化输出?

.net - 格式化 LINQ 查询的最佳方法