Skip to Content
Menu
This question has been flagged
3 Replies
4850 Views

To recreate I have a single Datetime field and a simple form view for it.


I've changed all of my Odoo users timezone to Japan (UTC+9) for test (settings/users/manage users), even the users marked as inactive. However when a user logs in and goes to that form and edits datetime field the field takes system OS timezone (UTC+2) in question and ignores user timezone in settings.

I've tested this - if user enters for example 2021-06-13 13:12:46 it is saved in database as 2021-06-13 11:12:46 which is correct for timezone UTC+2 , however since user has Japan set as their timezone in the settings I expected that to be saved as 2021-06-13 04:12:46 in the database.


Is this expected behaviour? Is it ALWAYS going to be like this (is there any case where it will take user timezone into the account?). For what is the user timezone even used?


Also can I somehow take this information from the env? Same as I get user timezone:

self.env.user.tz

but for system timezone? Or do I have to get it myself with Python? Edit: Actually I can't do it with Python for users, I can only get server system timezone not the user system timezone. How do I deal with this?


I''m  using Odoo 14 and Ubuntu 20


Edit: I can't comment on your answers because I lack 8 karma, whoever thought of this is...

anyway for my question I think I have to rely on users setting their timezone in settings to match their system timezone? Aka I hope they don't screw around(since they can easily select wrong one)?

Avatar
Discard
Best Answer

yes, it's the standard behavior of odoo.
Odoo takes browser timezone (eventually system timezone) regardless of the timezone of the user currently lognin.

for testing purpose, if you want to change the timezone of the browser timezone there are versions browser plugin available in the market but my favorite is open chrome with specific timezone with command line 

TZ='UTC' open -na "Google Chrome" --args "--user-data-dir=$HOME/chrome-profile"

Note: Timezone set on the user is used in a various module like event, employee_leave, resource, calendar_appointment to determine user availability 

Avatar
Discard

I have the same problem. How I can get the browser timezone in odoo environment?? So, if I am able to get the browser timezone, I'll can detect the mismatch between odoo user timezone and browser timezone and maybe set the same or consider the differences between them before save in UTC. I see the odoo detect this mismatch when set the user timezone preference and shows a warning message but it is a widget and I was not able to know how to do it. Any advice???

Best Answer

Instead of you changing it for every user, the user themselves can set it and it should work. Just log in as a user and press the logged-in username on the top right corner, select preferences, and there set the time-zone and then see if it gets you desired results.

Avatar
Discard
Author Best Answer

@Divyansh Tripathi (can't comment because of stupid forum karma system so I have to answer instead) I told you that it doesn't work, no matter if users change it themselves or if I change it for them.

This is development server and it always takes my system timezone which is UTC+2 instead of logged in user timezone defined in settings (no matter which user I log in as).

Edit: Are you saying I have to expect from users to set their timezone in setting to match their system timezone correctly? In that case it would work but I would have to enforce it (tell them) and hope they don't mess around and select wrong timezone.

Avatar
Discard
Related Posts Replies Views Activity
0
Oct 21
3074
1
Jan 23
1979
1
Feb 21
8285
6
Sep 19
9034
2
Mar 16
6518