比较openerp 7中的日期

时间:2014-11-08 09:21:28

标签: openerp openerp-7 erp odoo openerp-8

我在openerp 7中有一个自定义模块,其中包含字段签入时间(日期时间)和签出时间(日期时间)。当我点击保存时,我想在两个字段上执行验证,以确保结账时间不低于登记入住时间。谢谢你的任何想法。

2 个答案:

答案 0 :(得分:1)

如上所述,使用日期时间。

在Odoo中,您的日期,时间和日期时间将被用作使用

格式化的字符串

openerp.tools.DEFAULT_SERVER_DATE_FORMAT,DEFAULT_SERVER_TIME_FORMAT和DEFAULT_SERVER_DATETIME_FORMAT。

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.

几点说明:

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

答案 1 :(得分:0)

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

  1. 导入相关的python模块

    from datetime import datetime

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

    your_record = self.pool.get('your_custom_module')。search(cr,uid,domain,offset = 0,limit = None,order = None,context = None,count = False)

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

    1. 从相关字段创建日期时间对象(使用datetime类的strptime方法:从字符串创建日期对象)。类似的东西:

      check_in = datetime.strptime(your_record [0] ['登记入住时间'],'%Y-%m-%d') check_out = datetime.strptime(your_record [0] ['退房时间'],'%Y-%m-%d')

    2. 注意:您需要使格式('%Y-%m-%d')适应您的数据库返回的任何格式

      1. 将两个对象与一个简单的表达式进行比较:

        如果check_in<查看:     ... 其他:     ...

      2. 做任何其他需要做的操作。

      3. 如果没有关于流程的其他详细信息,很难提供更多信息。

        希望这有帮助, 干杯