Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
2 Odpowiedzi
4693 Widoki

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


Awatar
Odrzuć
Najlepsza odpowiedź

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

Awatar
Odrzuć
Autor Najlepsza odpowiedź

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..

Awatar
Odrzuć

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

Autor

Thank you

Autor

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

Powiązane posty Odpowiedzi Widoki Czynność
3
paź 23
7340
1
wrz 23
2604
1
maj 23
1586
2
kwi 23
1986
1
mar 23
1541