为什么数据库中显示的日期时间不一样



我在数据库中有以下行

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:

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

当您存储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)中,并显示到用户的时区(即使用户在不同的时区观看,时间也将精确到他们的时区)

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

的原因

最新更新