为什么datetime在数据库中显示得不一样?

为什么datetime在数据库中显示得不一样?,datetime,view,openerp,odoo-8,display,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

我在数据库中输入了以下行

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:

我改变了时区,但我仍然得到了差异

存储
日期时间时,应使用如下上下文:

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)中存储的用户时区中进行的,并显示到用户的时区(即使用户在不同的时区中查看,时间也将精确到其时区)

o将日期时间字段显示为时区,在本例中,时区为GMT+1,但由于斋月的原因,6月份的时区将为GMT+0,这就是为什么没有定义cr、uid和上下文。当然,这是代码的一部分,它显示了如何在方法中使用!(因此它不是字段定义)