为什么日期时间显示不像在数据库中?

why datetime showed not like in the DB?

我在数据库中有以下几行

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 将日期时间字段显示为时区,在这种情况下,时区是 GMT+1,但由于斋月,6 月将是 GMT+0,这就是为什么