当前位置: 首页 > 面试题库 >

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

慕容宏毅
2023-03-14
问题内容

这个问题类似于关于使用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

它不需要数周,但是添加起来应该并不难。



 类似资料:
  • 问题内容: 是否存在可用于将Unix时间戳转换为人类可读日期的MySQL函数?我有一个字段可以保存Unix时间,现在我想为人类可读的日期添加另一个字段。 问题答案: 用途: 另请参阅:的 MySQL文档。

  • 我正在训练把人类可读时间转换成纪元时间。这是我的测试用例 上面的代码打印4次“无效输入”,然后第5行打印正确的历元值,因为我的text='12.12.2020'输入字符串符合第5个条件。我需要打印,如果我的“文本”条件符合任何这些格式,然后只打印纪元值,否则打印“无效输入”。有谁能帮我解决这个问题吗?提前道谢。

  • 问题内容: 我有包含Java应用程序中的Unix时间戳的Excel文档。我想看看它们翻译成什么,并在Excel中将其表示为人类可读的日期。 例如,以下long: 1362161251894的 求值 结果 应类似于: 2013年3月1日11:07:31,894 我假设可以为此创建一个公式,但不确定如何。谢谢! 问题答案: 是的,您可以创建一个公式来为您执行此操作。Java和Unix / Linux计

  • 问题内容: 我正在从数据库获取数据并显示它: Unix日期(例如1374843600)在哪里。如何使用AngularJS指令设置日期格式?可能吗? 当我尝试这样做时,我得到的是标签mydate的值- 问题答案: 使用如下格式: 参考

  • 我知道这是一个非常常见的问题,但我觉得我找到的答案并没有真正解决问题。我将概述我的具体用例,并对来自其他SO答案和网络的信息进行总结。 对于我正在编写的服务,数据库条目被创建并存储在移动设备和我们的网站上,需要以两种方式同步。我们目前的目标是Android和iOS,它们都使用sqlite作为关系数据库。服务器端是使用Django和MySQL在Python中实现的,但将来可能会有其他解决方案取代它。

  • 问题内容: 我在一个MySQL数据库表上工作,该表的列包含我对其他主机执行ping操作时的时间戳记(例如2014-09-16 09:08:05)。我的问题是如何在几分钟内计算出针对特定主机的第一次ping和最后一次ping之间的差异?另外,如何为上述差异的开始和结束指定不同的时间戳(而不是第一次和最后一次ping)。这是表格的示例: 我希望我已经对自己的解释足够清楚。 问题答案: 您可以使用本机的