2013-10-07 4 views
2

Я сохраняю текущую дату в модели, используя поле datetime, в котором я указываю, что по умолчанию принимаю текущую дату как значение.Datetime и Time Zones - OpenERP 7

_defaults = { 
     'f_inicio' : lambda *a: datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 
    } 

Предполагая, что текущая дата '07/10/2013 17:24:05», по мнению дата '07/10/2013 12:24:05' и выпрямляются в базе данных и дата - '07/10/2013 17:24:05 '; Соберите это, вычитая пять часов. Пользователь может установить часовой пояс «Америка/Богота», Колумбия находится в регионе (GTM - 5:00). Но не понимаю, как правильно показывать, когда пользователь, так как я получаю совершенно другое значение, которое должно отображаться. По-видимому, это воспринимается как «GTM 0» GTM Colombia. Принимая приблизительную дату create_date поле, которое должно было дать мне по умолчанию «2013-10-07 22: 24: 05.384».

Кто-нибудь знает, что может случиться, действительно оцените любую помощь по этой проблеме, которая сводит меня с ума.

ответ

5

Это привело меня в замешательство в прошлом. Это очень простая проблема.

Дата, сохраненная в базе данных - часовой пояс UTC (GMT-0). Предположим, что человек настроен с часовым поясом GMT-5:00, а затем, сохраняя значение в базе данных, дата будет добавлена ​​с 5 часами (ровно 5, а не немного больше или меньше), и, таким образом, мы получаем время UTC для хранить в базе данных. Теперь, отображая то же самое, он будет проверять часовой пояс пользователей и обнаруживает, что его GMT - 5:00, поэтому время базы данных будет вычтено с помощью 5 (опять же точно 5, а не немного больше или меньше) и отобразит пользователя.

Это будет отлично для системы, которая используется в разных часовых поясах. Таким образом, понимание заключается в том, что входной сигнал принимается в часовом поясе пользователя, хранящемся в UTC (GMT-0) и отображаемом в часовом поясе пользователя (даже если просмотр пользователя находится в другом часовом поясе, время будет точным для их часового пояса)

Примечание:, если пользователь не установлен с часовым поясом, рассматривается часовой пояс браузеров и будет использоваться с предупреждающим значком в верхнем углу

Все. Надеюсь, это даст вам лучшую ясность!