odoo10中的日期时间问题?

时间:2017-08-01 10:34:55

标签: openerp odoo-10

在我的自定义模型中,我定义了字段

time_from = fields.Datetime(string="Time From", default=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

time_to = fields.Datetime(string="Time To", default=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))

tot_time = fields.Char("Time Difference", compute='_get_time')

这是我的计算功能

@api.depends('time_from', 'time_to')
def _get_time(self):
    t1 = datetime.datetime.strptime(self.time_from, '%Y-%m-%d %H:%M:%S')
    t2 = datetime.datetime.strptime(self.time_to, '%Y-%m-%d %H:%M:%S')
    if t2<t1:
        raise ValidationError('Time To must greater than Time From')
    time_diff = (t2-t1)
    self.tot_time = time_diff

这是成功完全打印时差。 时间和时间 mm / dd / yyyy hh:mm:ss格式。

如何将其更改为 mm / dd / yyyy hh:mm:ss 格式

我改变了这样的格式&#39;%Y-%d-%m%H:%M:%S&#39; 。 但是没有得到正确的结果。

如何更改格式?

是否可以用这种格式计算时差?

1 个答案:

答案 0 :(得分:1)

DateDatetime以特定格式保存为数据库中的字符串(请参阅fields.py上的类定义。您无法更改用于字段中的字段的格式ORM。如果要在显示这些字段时更改日期或日期时间的格式,则可以不是从代码中执行,而是从:

1)设置 - &gt;翻译 - &gt;找到您的语言并在内部,您可以更改在客户端呈现日期和日期时间字段的方式。

2)如果您有模板/报告,您可以使用例如<p t-esc="formatLang(time.strftime('%Y-%m-%d %H:%M:%S')" />或其他表达式来改变日期或日期时间的形成。

3)在xml文件的字段定义中,您可以使用将执行渲染的自定义javascript /小部件。