比较Python中不同格式的两个日期

时间:2015-08-24 10:11:51

标签: python django

我不熟悉Python,只是调试现有代码。我在这里比较两个日期,但它们有不同的格式。当我进行比较时,我得到“TypeError:无法比较offset-naive和offset-aware datetimes”。

  

if date_start <= current_date:

     

“TypeError:无法比较offset-naive和offset-aware

     

str(date_start)&gt;&gt; 2015-08-24 16:25:00 + 00:00

     

str(current_date)&gt;&gt; 2015-08-24 17:58:42.092391

如何进行有效的日期比较?我假设我需要将一种转换为另一种格式。

更新

hour_offset = 0
minute_offset = 0
if timezone_offset:
    offset_sign = int('%s1' % timezone_offset[0])
    hour_offset = offset_sign * int(timezone_offset[1:3])
    minute_offset = offset_sign * int(timezone_offset[3:5])    
    current_date = (datetime.datetime.now() + 
        datetime.timedelta(hours=hour_offset,minutes=minute_offset))

以前的开发者可能会以这种方式应用时区偏移量。对此有何看法?

2 个答案:

答案 0 :(得分:2)

使用dt.replace(tzinfo=tz)为天真的日期时间添加时区,以便进行比较。

答案 1 :(得分:1)

一种方法是将日期转换为自纪元以来的秒数然后进行比较。比如说,如果您的日期是2015-08-24 16:25:00,那么您可以使用datetime方法转换为秒。它将参数设为(year, month, day[, hour[, minute[,second[, microsecond[, tzinfo]]]]])。它返回一个datetime对象。最后,您可以使用strftime()将秒作为零填充十进制数。所以你的代码可以是:

import datetime
d1 = datetime.datetime(2015,8,24,16,25,0)
d2 = datetime.datetime(2015,8,24,17,58,42,92391)
if int(d1.strftime("%s")) > int(d2.strftime("%s")):
    print "First one is bigger"
else:
    print "Second one is bigger"

我希望这有帮助!