我在数据库中有以下几行
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:
我改变了时区,但我仍然有所不同!
答案 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,这就是
的原因