콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
2 답글
5057 화면

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


아바타
취소
베스트 답변

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

아바타
취소
작성자 베스트 답변

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

아바타
취소

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

작성자

Thank you

작성자

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

관련 게시물 답글 화면 활동
3
10월 23
8650
1
9월 23
3249
1
5월 23
2223
2
4월 23
2762
1
3월 23
2159