2013-05-13 70 views
0

我的問題看起來很常見,但我在網站上找不到答案。 我想兩個日期在python結合起來,我用這個:比較兩個日期時間的類型錯誤

delta = 2012-04-07 18:54:40 - 2012-04-07 18:54:39 

但我得到一個錯誤: TypeError: unsupported operand type(s) for -: 'str' and 'str'

我理解,但我不知道如何把它的正確方法。

你有什麼想法嗎?

Thks!

回答

4

你減去strings,不datetime.datetime對象。嘗試使用strptime方法將字符串轉換爲datetime.datetime

>>> delta = datetime.datetime.strptime('2012-04-07 18:54:40', '%Y-%m-%d %H:%M:%S') \ 
      - datetime.datetime.strptime('2012-04-07 18:54:39', '%Y-%m-%d %H:%M:%S') 
>>> delta 
datetime.timedelta(0, 1) 
+0

非常感謝,這就是我一直在尋找的! – Gabriel 2013-05-13 17:36:10

1

讓他們約會!

>>> import datetime 
>>> datetime.datetime.now() 
datetime.datetime(2013, 5, 13, 10, 25, 6, 20914) 
>>> datetime.datetime(2013, 5, 13, 10, 25, 6, 20914) 
datetime.datetime(2013, 5, 13, 10, 25, 6, 20914) 
>>> datetime.datetime(2013, 5, 13, 10, 25, 6, 20914) - datetime.datetime(2013, 5, 13, 10, 14, 6, 20914) 
datetime.timedelta(0, 660) 
>>> 
+0

謝謝,但我一直在尋找其他答案。 – Gabriel 2013-05-13 17:46:55

0

如果你想用日期時間計算,你首先必須解析你得到的日期字符串。

正如前面所提到的,一種可能性是無效的。您還可以使用python-dateutil

import dateutil.parser 
dateutil.parser.parse("2012-04-07 18:54:40") - dateutil.parser.parse("2012-04-07 18:54:39") 

# datetime.timedelta(0, 1) 

這更容易使用。此外,dateutil中還有很多其他有用的日期處理功能。