2011-12-01 108 views
21

我有一個Python日期時間,d,我想從午夜開始獲得浮點數的小時數。我想出的最好的是:如何從Python日期時間獲得小時數?

h = ((((d.hour * 60) + d.minute) * 60) + d.second)/(60.0 * 60) 

這爲凌晨4:30,18.75爲下午6:45,等給出了4.5有沒有更好的辦法?

+0

還有'd.microsecond' – jfs

回答

31
h = d.hour + d.minute/60. + d.second/3600. 

少括號...

+0

這是說我的意思更清晰。我喜歡。 –

+0

我很驚訝日期時間對象沒有像「.get_hours」這樣的方法! – Tommy

+1

@ChrisNelson:要小心,浮點運算不同於通常的數學運算,即使公式看起來相同;他們可能會產生不同的結果(無論是在這裏的情況還是它的重要性,即使它取決於您的應用程序),例如,[.total_seconds()方法中的浮點問題](http://bugs.python.org/issue8644) – jfs

5
h = (d - d.replace(hour=0,minute=0,second=0)).seconds/3600. 

...有少師和/或乘法

+0

什麼是微秒? – ovgolovin

+0

@eumiro:不,我只是指輸入的代碼,因爲我在支架節儉上輸了! – MattH

+0

@ovgolovin:OP不計算微秒,所以如果不是在替換方法中,它們將被減去結果。實際上微秒單獨存儲在timedelta對象上,所以我只是沒有考慮到它們,因爲OP沒有。 – MattH

相關問題