2017-07-14 96 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')