为什么datetime显示不像DB?

时间:2016-05-03 14:59:54

标签: datetime view openerp odoo-8 display

我在数据库中有以下几行

id |  date_order    |  name | origin

----+---------------------+----------+---------

38 | 2016-05-10 14:00:00 | OT/00024 | GI/00005:

39 | 2016-05-26 14:00:00 | OT/00025 | GI/00005:

40 | 2016-06-11 14:00:00 | OT/00026 | GI/00005:

41 | 2016-06-27 14:00:00 | OT/00027 | GI/00005:

42 | 2016-07-13 14:00:00 | OT/00028 | GI/00005:

但它在视图中显示为:

date_order          |   name   | origin

--------------------+----------+-------------

10/05/2016 15:00:00 | OT/00024 | GI/00005:

26/05/2016 15:00:00 | OT/00025 | GI/00005:

11/06/2016 14:00:00 | OT/00026 | GI/00005:

27/06/2016 14:00:00 | OT/00027 | GI/00005:

13/07/2016 15:00:00 | OT/00028 | GI/00005:

我改变了时区,但我仍然有所不同

2 个答案:

答案 0 :(得分:2)

存储datetime时,应使用以下上下文:

from openerp.osv import fields
from datetime import datetime
...
my_date = fields.datetime.context_timestamp(cr, uid, datetime.now(), context=context)

数据库中存储的日期是UTC(GMT-0)时区。假设此人设置时区GMT - 5:00,然后在将值存储到数据库时,日期将添加5小时(正好是5,不多或少一点),因此我们得到UTC时间到存储到数据库中。现在,当显示相同时,它将检查用户时区,并发现其GMT - 5:00,因此数据库时间将减去5(再次精确为5,不多或少一点)并显示用户。

这对于在不同时区使用的系统非常有用。因此,理解是输入采用用户的时区存储在UTC(GMT-0)中并显示给用户的时区(即使用户在不同的时区观看,时间也准确到他们的时区)

答案 1 :(得分:0)

Odoo显示日期时间字段AS TIMEZONE,在这种情况下,时区是GMT + 1但是由于斋月而在6月将是GMT + 0,这就是

的原因