Skip to Content
Menu
This question has been flagged
2 Replies
4397 Views

When i am saving a expire date time on form data in db by the help of Create( ) of a form as follows at that time db stores an other expire date time..please suggest what to do.. In the form view/Tree view , it shows current date time as input but not in DB.

@api.model 
def create(self, vals):
otp_value = ''.join(random.choice(string.digits) for _ in range(4)) 
current_date_time = datetime.datetime.now() 
date_time = current_date_time + datetime.timedelta(0,600) 
new_record = super().create({'mobile_no':vals['mobile_no'],'otp':otp_value,'exp_date_time':date_time}) return new_record


Avatar
Discard
Best Answer

Hi,

The thing is that Odoo stores the date-time in the database in UTC time, when it is displayed in the front end, the time will be displayed in the users set timezone. As odoo is multi user system, there will be users in the same database from the different timezones, to make the things easier odoo have used this way.


Suppose if you are here in India, your user timezone will be Asia/Kolkata , ie, +5:30 UTC. And if you save a date-time value 26/06/2019 6:30 PM in your custom field, in the database it will get stored in the UTC as 26/06/2019 1:00 PM(by subtracting the +5:30 from the time).

And when the same field has to be displayed in the front end from the database, the UTC time from the database is taken and displayed according to the users timezone. So when displaying the same field to the user with the timezone as Asia/Kolkata it will be 26/06/2019 6:30 PM, and for another user with timezone Saudi Arabia which is +3 , the value will be 26/06/2019 1:00 pm + 3 hours, ie 26/06/2019 4:00 PM.


In the database 26/06/2019 1:00 PM,

for user 1 with timezone +5:30 , time will be 26/06/2019 06:30 pm.

for user2 with timezone +3:00, time will be 26/06/2019 04:00 pm.


Thanks

Avatar
Discard
Author Best Answer

Hii, Niyas Raphy 

The thing is that , i am trying to match the current datetime to the stored datetime in python to postgres sql for otp verification ..how should i do ??

thanks in advance..

Avatar
Discard

Once you fetch the data from the db, if you are getting it in the UTC, you can convert it to the local time by adding timezone value to it. See: https://www.odoo.com/forum/help-1/question/how-to-convert-utc-datetime-to-local-118994

Author

Thank you

Author

Hello Niyas, this suggestion is not working..Its showing an error in terminal that if zone.upper() == 'UTC':

Related Posts Replies Views Activity
3
Oct 23
5973
1
Sep 23
1962
1
May 23
1000
2
Apr 23
1374
1
Mar 23
996