如何在odoo中将日期与unicode日期进行比较

时间:2015-10-22 04:52:25

标签: python datetime unicode openerp odoo

我试图比较我的选择日期和计划日期,这是我的飞机日期代码:

fmt = '%Y-%m-%d'
if self.date_plant:
    from_date = self.date_plant
    d1 = datetime.strptime(str(from_date), fmt)
    date_after_month = datetime.date(d1) + relativedelta(months=1)
    cetak = date_after_month.strftime(fmt)
    self.nursery_plandate = cetak

这是我要比较的代码:

fmt = '%Y-%m-%d'
if self.date:
    fromdt = self.date
    plan = self.nursery_plandate
    rang = int(7)
    d1 = datetime.strptime(str(fromdt), fmt)
    d2 = plan.day
    d3 = d1.day
    if d1 and plan:
        if d1 == plan:
            self.nursery_information = '2'  # pass
        elif d3 < d2:
            self.nursery_information = '0'  # untimely
        elif d3 > d2:
            self.nursery_information = '1'  # late
        else:
            if d3 >= rang:
                self.nursery_information = '1'  # late
            elif d3 <= rang:
                self.nursery_information = '0'  # untimely
            else:
                self.nursery_information = '2'  # late

这是我的错误:

line 166, in dateinformation
d2 = plan.day
AttributeError: 'unicode' object has no attribute 'day'

1 个答案:

答案 0 :(得分:0)

self.nursery_plandate不是有效的日期时间/日期对象,因此您无法访问它的属性,您需要从该值创建有效的日期时间对象,然后您可以访问它的属性。

fmt = '%Y-%m-%d'
if self.date:
    fromdt = self.date
    plan = datetime.strptime(str(self.nursery_plandate),fmt)
    rang = int(7)
    d1 = datetime.strptime(str(fromdt), fmt)
    d2 = plan.day
    d3 = d1.day
    if d1 and plan:
        if d1 == plan:
            self.nursery_information = '2'  # pass
        elif d3 < d2:
            self.nursery_information = '0'  # untimely
        elif d3 > d2:
            self.nursery_information = '1'  # late
        else:
            if d3 >= rang:
                self.nursery_information = '1'  # late
            elif d3 <= rang:
                self.nursery_information = '0'  # untimely
            else:
                self.nursery_information = '2'  # late