我有2个时间值,其类型datetime.time
。我想找到他们的区别。显而易见的事情是t1 - t2,但这不起作用。它适用于datetime.datetime
类型的对象,但不适用于datetime.time
。那么做到这一点的最好方法是什么?在Python中找到2次差异的最简单方法是什么?
回答
首先,注意,datetime.time是一天的时间,独立于给定的日子,所以任何两个日期时间之间的不同时间值将会小于24小时。
一种方法是将两个datetime.time值转换为可比较的值(如毫秒),并找出差异。
t1, t2 = datetime.time(...), datetime.time(...)
t1_ms = (t1.hour*60*60 + t1.minute*60 + t1.second)*1000 + t1.microsecond
t2_ms = (t2.hour*60*60 + t2.minute*60 + t2.second)*1000 + t2.microsecond
delta_ms = max([t1_ms, t2_ms]) - min([t1_ms, t2_ms])
这是一个有点跛脚,但它的作品。
看起来这不被支持,因为没有办法处理datetime.time中的溢出问题。我知道这不是一个直接的答案,但也许有比我更多的python经验的人可以进一步采取这一点。欲了解更多信息,请参阅:http://bugs.python.org/issue3250
您可以将两者都转换为timedelta objects并将它们相互减去,这将会考虑结转。例如:
>>> import datetime as dt
>>> t1 = dt.time(23, 5, 5, 5)
>>> t2 = dt.time(10, 5, 5, 5)
>>> dt1 = dt.timedelta(hours=t1.hour, minutes=t1.minute, seconds=t1.second, microseconds=t1.microsecond)
>>> dt2 = dt.timedelta(hours=t2.hour, minutes=t2.minute, seconds=t2.second, microseconds=t2.microsecond)
>>> print(dt1-dt2)
13:00:00
>>> print(dt2-dt1)
-1 day, 11:00:00
>>> print(abs(dt2-dt1))
13:00:00
Python中的负timedelta对象得到负日字段,其他字段为正。你可以事先检查:比较适用于这两个时间对象和timedelta对象:
>>> dt2 < dt1
True
>>> t2 < t1
True
chryss:你可以认真用一个例子做的很好这里。 – Arafangion 2009-03-12 03:09:19
也有点傻,但你可以尝试选择任意一天,在它的每个时间嵌入,使用datetime.datetime.combine
,然后减去:
>>> import datetime
>>> t1 = datetime.time(2,3,4)
>>> t2 = datetime.time(18,20,59)
>>> dummydate = datetime.date(2000,1,1)
>>> datetime.datetime.combine(dummydate,t2) - datetime.datetime.combine(dummydate,t1)
datetime.timedelta(0, 58675)
Python有可用于算术pytz(http://pytz.sourceforge.net)模块'时间'对象。它也考虑到了DST偏移。上面的页面有很多例子来说明pytz的用法。
检索以毫秒为单位的时间,然后进行减法。
Environment.TickCount似乎运作良好,如果你需要快速的东西。
INT开始= Environment.TickCount
... DoSomething的()
INT elapsedtime = Environment.TickCount - 启动
乔恩
- 1. 找出两个正整数之间差异的最简单方法是什么?
- 2. 什么是找到时间差异最快的方法
- 3. 在Python中创建表格最简单的方法是什么?
- 4. 在数据库中存储差异的最简洁方法是什么?
- 5. 什么是最简单的方法把URL链接到UITableViewCell中
- 6. Java:XML到数据库中,最简单的方法是什么?
- 7. 用Python安装OpenVAS omblib最简单的方法是什么?
- 8. 用python执行WHOIS协议最简单的方法是什么?
- 9. 使用Python进行SSH的最简单方法是什么?
- 10. 将python脚本变成webapp最简单的方法是什么?
- 11. 在C#中的两个日期之间的月份中获得差异的最简单方法是什么?
- 12. 在2维空间中扩展numpy数组最简单的方法是什么?
- 13. 在XNA中定位相机的最简单方法是什么?
- 14. 在C#中获取OutOfMemoryException的最简单方法是什么?
- 15. 在DesignMode中编辑集合的最简单方法是什么?
- 16. 在Game Center中设置highScore最简单的方法是什么?
- 17. 在iPhone OS中使用SQLite3最简单的方法是什么?
- 18. 在ES6中包装Promise的最简单方法是什么?
- 19. 在java中构建IDE最简单的方法是什么?
- 20. 在C中测试空值的最简单方法是什么?
- 21. 在RDBMS中映射表的最简单方法是什么
- 22. 在Java中拉取JSON URL最简单的方法是什么?
- 23. 在Ruby中执行XMLHttpRequest的最简单方法是什么?
- 24. 在VB.net中保存设置的最简单方法是什么
- 25. 在C++中生成xml最简单的方法是什么?
- 26. 在matlab中绘制TSP图的最简单方法是什么?
- 27. 在WPF中播放MP3最简单的方法是什么?
- 28. 在C中抓取网页的最简单方法是什么?
- 29. 在Objective-C中否定BOOL的最简单方法是什么?
- 30. 在c#中加密文件最简单的方法是什么?
请注意,此解决方案不会保留符号。另外, delta_ms = abs(t1_ms - t2_ms)有点容易理解,并至少保存一个减法。 – 2008-09-09 01:19:55
如果t1_ms在午夜之前,而t2_ms在午夜之后则不起作用 – 2008-11-06 03:52:40