使用时间和日期

来自Odoo V
跳转至: 导航搜索

由于历史原因,ORM记录集处理date和datetime时间值使用他们的字符串表示,而不是实际的Python date和Datetime对象。在数据库中,它们存储在date字段中,但是datetimes存储在UTC时间。

odoo.tools.DEFAULT_SERVER_DATE_FORMAT odoo.tools.DEFAULT_SERVER_DATETIME_FORMAT

他们映射到%Y-%m-%d和%Y-%m-%d %H:%M:%S分别。

协助处理日期,fields.Date和fields.Datetime提供几个函数。例如︰


>>> from odoo import fields
>>> fields.Datetime.now()
'2014-12-08 23:36:09'
>>> fields.Datetime.from_string('2014-12-08 23:36:09')
datetime.datetime(2014, 12, 8, 23, 36, 9)
 

日期和时间由服务器处理和存储在一个简单的UTC格式中,这可能不同于用户正在处理的时区中的服务器的日期和时间。正因为如此,我们可以使用的其他一些功能,来帮助我们处理这个问题︰


 fields.Date.today() 返回当前日期的字符串格式,并使用UTC作为参考是服务器所期望的。这是符合计算机的默认值。  fields.Datetime.now() 返回一个带有当前datetime的字符串,并使用UTC作为参考的格式是服务器所期望的。这是符合计算机的默认值。  fields.Date.context_today(record, timestamp=None)返回一个在会话的上下文中使用当前日期。时区值是从记录的上下文中获取,并使用可选参数datetime而不是当前时间。  fields.Datetime.context_timestamp(record, timestamp) 转换一个真实的datetime(没有时区)进入一个时区感知的datetime。那时区是从记录的上下文中提取出来的,因此做为函数的名字。

促进格式之间的转换,这两个fields.Date和fields.Datetime提供了这些功能︰


 rom_string(value)将字符串转换为日期或datetime对象  to_string(value)转换为一个date或datetime对象为字符串是服务器所期望的格式