【问题标题】:function to get enddate from startdate & duration in openerp从 openerp 中的开始日期和持续时间获取结束日期的函数
【发布时间】:2013-03-25 09:56:44
【问题描述】:

这是第一个代码
上课时间表_时间表(osv.osv):
_name='时间表.时间表'
_columns={
'name': fields.char('Name',size="64",required=True),
'课程':fields.many2one('college.course','Course'),
'学期':fields.many2one('course.semester','学期'),
'主题':fields.one2many('timetable.subjects','timetable_id','主题')
}
timetable_timetable()

这是第二个代码
上课时间表_主题(osv.osv):
_name = 'timetable.subjects'
_columns ={
'timetable_id' : fields.many2one('timetable.timetable','时间表'),
'subject_id': fields.many2one('semester.subject','Subject'),
'start_date': fields.datetime('开始日期',store=True),
'duration' : fields.float('Duration',size=64,required=True),
'end_date' : fields.datetime('结束日期',store=True),
'教授' : fields.many2one('professor.professor','教授')
}
timetable_subjects()

我想创建一个函数 on_change,它从 start_date 和持续时间返回 end_date。那么我该如何实现该功能。

【问题讨论】:

    标签: openerp


    【解决方案1】:

    def on_change(self, cr, uid, ids, t_date, duration):

        res = {'end_date': False}
        if t_date:
            now = datetime.strptime(t_date, '%Y-%m-%d %H:%M:%S')
    
            e_date = now + timedelta(hours=duration)
            print e_date
            f_date = datetime.strftime(e_date, '%Y-%m-%d %H:%M:%S')
            res['end_date'] = f_date
        return {'value': res}
    

    【讨论】:

      【解决方案2】:

      在您的 onchange 方法中为 end_date 编写此代码,

      from datetime import datetime
      from dateutil.relativedelta import relativedelta
      
      def my_onchange(self, cr, uid, ids, s_date, duration):
          return {'value': {'end_date': (datetime.strptime(s_date,'%Y-%m-%d %H:%M:%S') + relativedelta(days=duration)).strftime('%Y-%m-%d %H:%M:%S')}}
      

      如果您的持续时间以月或年为单位,请以 relativedelta(months=duration) 为月,relativedelta(years=duration) 以年为单位,小时、分钟或秒以同样的方式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-06
        • 1970-01-01
        相关资源
        最近更新 更多