比较不同格式的日期时出错

时间:2015-03-17 21:12:25

标签: python date datetime

当下面的代码片段被执行时,我收到以下错误,我提供了样本输入" DueDate"和" " CreatedDate",是因为它们都采用不同的时间格式?如何转换" DueDate"采用与"相同的格式 创建日期"

错误: -

TypeError: unsupported operand type(s) for -: 'Text' and 'datetime.datetime

CODE SNIPPET: -

if ((None != DueDate) and ((DueDate - CreatedDate).days < 1)):

示例输入: -

DueDate
2/6/2015
CreatedDate
2015-02-03 20:15:47.950000

2 个答案:

答案 0 :(得分:2)

您只需将日期字符串转换为datetime对象即可。没有从字符串到datetime对象的隐式转换。您可以尝试以下内容。

import datetime

date = "3/17/2015"

# I used now in place of your datetime object CreatedDate
datetime_object = datetime.datetime.now()

due_date = datetime.datetime.strptime(date, "%m/%d/%Y")

if due_date != None and (datetime_object - due_date).days < 1:
    print("clever message")

修改

感谢@ J.F.Sebatian的评论,我使用time.strptime取出了第一种方法。有关详细信息,请参阅下面的评论。

答案 1 :(得分:0)

实际上,您定义的'date'对象,即DueDate和CreatedDate,有两种不同的类型(分别为'Text'和timedate.timedate),并且没有可用的差异等操作。

从Python文档中,请参阅例如https://docs.python.org/2/library/datetime.html

  

class datetime。 timedelta

     

表示两个日期,时间或日期时间实例与微秒分辨率之间差异的持续时间。

因此,在将DueDate(以前称为“Text”类型)重新定义为datetime.datetime对象后,您当然可以考虑两个datetime.datetime对象的区别,例如:

DueDate = datetime.datetime(2015, 6, 2, 0, 0)