我有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. 在數據庫中存儲差異的最簡潔方法是什麼?
- 4. 什麼是最簡單的方法把URL鏈接到UITableViewCell中
- 5. Java:XML到數據庫中,最簡單的方法是什麼?
- 6. 用python執行WHOIS協議最簡單的方法是什麼?
- 7. 使用Python進行SSH的最簡單方法是什麼?
- 8. 用Python安裝OpenVAS omblib最簡單的方法是什麼?
- 9. 在C#中的兩個日期之間的月份中獲得差異的最簡單方法是什麼?
- 10. 在2維空間中擴展numpy數組最簡單的方法是什麼?
- 11. 在VB.net中保存設置的最簡單方法是什麼
- 12. 在webkit中清除浮動的最簡單方法是什麼?
- 13. 在C中測試空值的最簡單方法是什麼?
- 14. 在WPF中播放MP3最簡單的方法是什麼?
- 15. 在java中構建IDE最簡單的方法是什麼?
- 16. 在ES6中包裝Promise的最簡單方法是什麼?
- 17. 在C++中生成xml最簡單的方法是什麼?
- 18. 在iPhone OS中使用SQLite3最簡單的方法是什麼?
- 19. 在C中抓取網頁的最簡單方法是什麼?
- 20. 在c#中加密文件最簡單的方法是什麼?
- 21. 在C#中獲取OutOfMemoryException的最簡單方法是什麼?
- 22. 在XNA中定位相機的最簡單方法是什麼?
- 23. 在Java中創建GUI的最簡單方法是什麼?
- 24. 在Objective-C中否定BOOL的最簡單方法是什麼?
- 25. 在python中實現fprintf的簡單方法是什麼?
- 26. 什麼是在模板中查找當前項目ID的最簡單方法
- 27. 將DOCTYPE添加到Scala XML的最簡單方法是什麼?
- 28. 從C++調用Java方法的最簡單方法是什麼?
- 29. 什麼是從Javascript調用C#方法的最簡單方法
- 30. 在Python中訪問電腦麥克風的最簡單方法是什麼?
請注意,此解決方案不會保留符號。另外, delta_ms = abs(t1_ms - t2_ms)有點容易理解,並至少保存一個減法。 – 2008-09-09 01:19:55
如果t1_ms在午夜之前,而t2_ms在午夜之後則不起作用 – 2008-11-06 03:52:40