比较OpenERP7中的日期

比较OpenERP7中的日期,openerp,openerp-7,erp,odoo,openerp-8,Openerp,Openerp 7,Erp,Odoo,Openerp 8,我在OpenERP7中有一个自定义模块,其中包含签入时间(日期时间)和签出时间(日期时间)字段。单击“保存”时,我希望对这两个字段执行验证,以确保签出时间不少于签入时间。谢谢你的建议。我会尝试使用datetime模块中的datetime类 导入相关python模块 从日期时间导入日期时间 通过适当的方法检索您的记录,即 您的\u记录=self.pool.get('your\u custom\u module')。搜索(cr、uid、域、偏移量=0、限制=None、顺序=None、上下文=None

我在OpenERP7中有一个自定义模块,其中包含签入时间(日期时间)和签出时间(日期时间)字段。单击“保存”时,我希望对这两个字段执行验证,以确保签出时间不少于签入时间。谢谢你的建议。

我会尝试使用datetime模块中的datetime类

  • 导入相关python模块

    从日期时间导入日期时间

  • 通过适当的方法检索您的记录,即

    您的\u记录=self.pool.get('your\u custom\u module')。搜索(cr、uid、域、偏移量=0、限制=None、顺序=None、上下文=None、计数=False)

  • 注意:您需要提供适当的域并修改/删除参数以满足您的需要

  • 从相关字段创建datetime对象(使用datetime类的strTime方法:从字符串创建日期对象)。比如:

    check_-in=datetime.strtime(您的_记录[0]['check-in time'],“%Y-%m-%d”) check_out=datetime.strtime(您的_记录[0]['check-out time'],“%Y-%m-%d”)

  • 注意:您需要将格式(“%Y-%m-%d”)调整为DB返回的任何格式

  • 使用简单表达式比较两个对象:

    如果签入<签出: ... 其他:

  • 做任何其他需要做的操作

  • 如果没有关于流程的更多细节,就很难提供更多信息

    希望这有帮助,
    干杯

    如上所述,使用datetime

    在Odoo中,日期、时间和日期时间作为字符串使用

    openerp.tools.DEFAULT_SERVER_DATE_格式、DEFAULT_SERVER_TIME_格式和DEFAULT_SERVER_DATETIME_格式

    from datetime import datetime
    from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
    
    check_in = datetime.strptime(my_object.check_in, DEFAULT_SERVER_DATETIME_FORMAT)
    check_out = datetime.strptime(my_object.check_out, DEFAULT_SERVER_DATETIME_FORMAT)
    
    Go nuts with comparisons etc.
    
    几点注意:

  • 我强烈建议阅读标准库中的datetime模块,特别是strftime、strptime和timedelta
  • 请记住,您将获得UTC中的日期和日期时间。表示date和datetime字段的类具有返回用户时区中的日期和时间戳的方法,但您通常不需要这些方法。查看fields.date.context_today和fields.datetime.context_timestamp