2017-07-14 58 views
0

我需要比較我的輸入時間和當前時間。如果我的輸入時間超過5天,我會做d = X_value。否則,d = Y_value。我輸入的時間是這樣的格式:不能比較datetime.datetime到unicode

my_input__time: 2017-07-05 22:52:00+00:00 

我view.py看起來是這樣的:

import datetime 
    five_days_ago = datetime.datetime.now() - datetime.timedelta(5) 

    if my_input_time < five_days_ago: 
     d = X_value 
    else: 
     d = Y_value 

我得到類型錯誤:無法比較datetime.datetime爲Unicode。如何將my_input_tinefive_dys_ago轉換爲相同的格式,以便我可以比較?

+0

哪裏是你輸入的時間來自哪裏?你需要把它轉換成一個'datetime'對象。 –

回答

0

使用datetime.strptime

from datetime import datetime 
t = datetime.strptime(my_input_time, '%Y%m%d') # or whatever your datetime format is 

,您還可以設置d更簡潔: d = X_value if t < five_days_ago else Y_value

1

試着用這一點,並告訴我

import datetime 
five_days_ago = datetime.datetime.now() - datetime.timedelta(5) 


my_input_time = datetime.datetime.strptime(my_input__time, '%Y-%m-%d %H:%M:%S+00:00') 

    if my_input_time < five_days_ago: 
     d = X_value 
    else: 
     d = Y_value 
+0

謝謝@Mauricio!但是,我仍然得到同樣的錯誤。 2時間值的格式現在看起來像這樣: – coding

+0

Thanks @Mauricio!但是,我仍然得到同樣的錯誤。 2時間值的格式如下所示:my_input__time:2017-07-05 22:52:00 + 00:00 five_days_ago:2017-07-09 21:13:28.967405 + 00:00。那麼可能是因爲five_days_ago格式的m秒導致問題?我如何擺脫five_days_ago中的ms? – coding

+0

看看我的新編輯並告訴我 –

1

datetime.now()將返回日期下降到秒。

所以添加到@thaavik的回答,你可以做這樣的事情能夠更準確地比較:

datetime.strptime(my_input_time, '%Y%m%d %h:%m:%s')