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

标签 python time formatting

这个问题类似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

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

关于python - 使用 Python 减去两个 UNIX 时间戳时,如何产生人类可读的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574329/

相关文章:

c# - 将 TimeSpan 格式化为 mm :ss for positive and negative TimeSpans

sql - 识别两列之间的时间差超过 4 小时的行

time - 如何在Kotlin中将UNIX时间戳转换为UInt8数组?

java - BigDecimal 中 Divide 方法的 Scale()

python - Django注释返回多个

Python nltk 只读

python - 正则表达式替换 python 中的字符串但保留其大小写的最佳方法是什么?

python - Python 请求中的 SSLError(读取操作超时)

python - 如何在 Python/Pandas 中将变量设置为 "Today' s"date

SQL Server XML 查询格式