openerp/odoo时间日期设置

1.日期格式化字符串

DATE_FORMAT = "%Y - %m - %d"

2.日期时间格式化字符串

DATETIME_FORMAT = "%Y - %m - %d %H:%M:%S"

3.日期时间格式字符串(包含毫秒)

DATETIME_FORMAT = "%Y - %m - %d %H:%M:%S.%f

4.openerp对象中字段赋值为当前日期(字符串)

fields.date.context_today
fields.date.context_today(self,cr,uid,context=context)
fields.date.today()

5.openerp对象中字段赋值为当前时间(字符串)

fields.datetime.now()
fields.datetime.context_timestamp(cr,uid,datetime.now(),context=context)

6.openerp官方建议默认写法

fields.date.context_today
fields.datetime.now()

7.字符串转日期时间

datetime.datetime.strptime(sale.time,DATE_FORMAT)

8.日期时间转字符串

datetime.datetime.strftime(datetime.date.today(),DATE_FORMAT)

9.python中获取当前日期

datetime.date.today()

10.python中获取当前时间

datetime.datetime.now()

11.根据日期间隔,自动算出天数
#计算日期间隔对应的天数
    def _get_number_of_days(self, date_from, date_to):
        DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S"
        from_dt = datetime.datetime.strptime(date_from, DATETIME_FORMAT)
        to_dt = datetime.datetime.strptime(date_to, DATETIME_FORMAT)
        timedelta = to_dt - from_dt
        diff_day = timedelta.days + float(timedelta.seconds) / 86400
        return diff_day
12.设置日期字段
 _columns = {
            'date_from': fields.datetime(u'起始日期',required=True, readonly=True, states={'draft':[('readonly',False)]}, select=True),
            'date_to': fields.datetime(u'结束日期', readonly=True, states={'draft':[('readonly',False)]}),
            'days': fields.float(u'天数', digits=(8, 2), readonly=True, states={'draft':[('readonly',False)]}),
          }
13.更改起始日期,自动计算天数
def onchange_date_from(self, cr, uid, ids, date_to, date_from):
        if (date_from and date_to) and (date_from > date_to):
            raise osv.except_osv(_(u'警告!'),_(u'开始日期必须小于结束日期.'))

        result = {'value': {}}

        # 只有起始日期,没有结束日期
        if date_from and not date_to:
            date_to_with_delta = datetime.datetime.strptime(date_from, tools.DEFAULT_SERVER_DATETIME_FORMAT) + datetime.timedelta(hours=8)
            result['value']['date_to'] = str(date_to_with_delta)

        # Compute and update the number of days
        if (date_to and date_from) and (date_from <= date_to):
            diff_day = self._get_number_of_days(date_from, date_to)
            result['value']['days'] = round(math.floor(diff_day))+1
        else:
            result['value']['days'] = 0

        return result
    
14.更改结束日期,自动算出天数
def onchange_date_to(self, cr, uid, ids, date_to, date_from):
        if (date_from and date_to) and (date_from > date_to):
            raise osv.except_osv(_(u'警告!'),_(u'开始日期必须小于结束日期.'))

        result = {'value': {}}

        # Compute and update the number of days
        if (date_to and date_from) and (date_from <= date_to):
            diff_day = self._get_number_of_days(date_from, date_to)
            result['value']['days'] = round(math.floor(diff_day))+1
        else:
            result['value']['days'] = 0

        return result
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值