【问题标题】:How to assign current date to a date field in odoo v8?如何将当前日期分配给 odoo v8 中的日期字段?
【发布时间】:2015-08-12 12:38:00
【问题描述】:

我想在以下代码中将当前日期分配给日期字段“start_date”:

calendar_obj.create(cr,uid,
             {'name' : rec_res.act_ion,
              'user_id' : rec_res.asgnd_to.id,
              'start_date' : lambda *a:datetime.today().strftime('%m-%d-%Y'),
              'stop_date' : rec_res.due_date,
              'allday' : True,
              'partner_ids' : [(6,0, [rec_res.asgnd_to.partner_id.id])]
             },
context=context)

如何设置或分配当前日期值到start_date字段?

【问题讨论】:

    标签: python python-2.7 odoo-8 odoo


    【解决方案1】:

    Date 字段包含一个today() 方法,仅适用于以下情况:

    'start_date': fields.Date.today(),
    

    当然需要先导入fields

    from openerp import fields
    

    【讨论】:

      【解决方案2】:
      import time
      
      'start_date':time.strftime("%d/%m/%Y")
      

      【讨论】:

        【解决方案3】:

        python datetime – 日期/时间值操作。

        用途: datetime 模块包括用于进行日期和时间解析、格式化和算术的函数和类。

        适用于: 2.3 及更高版本

        使用 datetime 类来保存由日期和时间组成的值。与 date 一样,有几个方便的类方法可以从其他常用值创建 datetime 实例。

        'start_date' : datetime.datetime.now().strftime('%m-%d-%Y')
        
        
        import datetime
        
        print 'Now    :', datetime.datetime.now()
        print 'Today  :', datetime.datetime.today()
        print 'UTC Now:', datetime.datetime.utcnow()
        
        d = datetime.datetime.now()
        for attr in [ 'year', 'month', 'day', 'hour', 'minute', 'second', 'microsecond']:
            print attr, ':', getattr(d, attr)
        

        结果:

        Now    : 2015-08-14 16:27:51.475070
        Today  : 2015-08-14 16:27:51.475462
        UTC Now: 2015-08-14 10:57:51.475585
        year : 2015
        month : 8
        day : 14
        hour : 16
        minute : 27
        second : 51
        microsecond : 475645
        

        格式化和解析

        日期时间对象的默认字符串表示使用 ISO 8601 格式 (YYYY-MM-DDTHH:MM:SS.mmmmmm)。可以使用 strftime() 生成替代格式。同样,如果您的输入数据包含可使用 time.strptime() 解析的时间戳值,则 datetime.strptime() 是将它们转换为 datetime 实例的便捷方法。

        import datetime
        
        format = "%a %b %d %H:%M:%S %Y"
        
        today = datetime.datetime.today()
        print 'ISO     :', today
        
        s = today.strftime(format)
        print 'strftime:', s
        
        d = datetime.datetime.strptime(s, format)
        print 'strptime:', d.strftime(format)
        

        结果:

        ISO     : 2015-08-14 16:32:23.914699
        strftime: Fri Aug 14 16:32:23 2015
        strptime: Fri Aug 14 16:32:23 2015
        

        【讨论】:

          【解决方案4】:

          试试吧

          'start_date' : '%m-%d-%Y' % datetime.today(),
          

          'start_date' : datetime.today().strftime('%m-%d-%Y'),
          

          【讨论】:

          • 我试过了,我得到了这个错误 - 'datetime.datetime' 对象没有属性 'getitem'
          • 我修改了答案,现在检查一下。你是如何声明属性star_date的?
          【解决方案5】:
          from datetime import datetime
          
          current_date = fields.Date(string='Date',default=datetime.now())
          
          current_date.strftime("%d-%M-%Y") // strftime function use for the Date Format
          

          【讨论】:

          • 您的第二行将不起作用,因为它将影响导入模块的当前日期。
          猜你喜欢
          • 2021-08-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-05-10
          • 1970-01-01
          相关资源
          最近更新 更多