# How to calculate time difference between two dates based on below codes

By
Odoo
on 11/12/14, 2:27 AM 1,527 views

def onchange_dates(self, cr, uid, ids, checkin_date=False, checkout_date=False, duration=False):
# This mathod gives the duration between check in checkout if customer will leave only for some hour it would be considers as
# a whole day. If customer will checkin checkout for more or equal hours , which configured in company as additional hours than
# it would be consider as full day
value = {}
company_obj = self.pool.get('res.company')
company_ids = company_obj.search(cr, uid, [])
if company_ids:
company = company_obj.browse(cr, uid, company_ids[0])
if not duration:
duration = 0
if checkin_date and checkout_date:
chkin_dt = datetime.datetime.strptime(checkin_date, '%Y-%m-%d %H:%M:%S')
chkout_dt = datetime.datetime.strptime(checkout_date, '%Y-%m-%d %H:%M:%S')
dur = chkout_dt - chkin_dt
duration = dur.days # here I want to update the time difference betwenn two dates how ?
if configured_addition_hours > 0:
additional_hours = abs((dur.seconds / 60) / 60)
duration += 1
value.update({'value':{'duration':duration}})   #Now currenly its update days ,i need the time between two dates

#### Temur

--Temur--

3107
| 6 5 7
Tbilisi, Georgia
--Temur--
`Programmer`
Temur
On 11/12/14, 3:45 AM

You've to use timedelta from datetime package, please see: timedelta documentation

you can import it in python using:

from dateitime import timedelta

then use timedelta in your code to calculate the difference you're interested in.

where I can use time delta If I use timedelta then is it possible to acess this way duration = dur.time

Odoo
on 11/12/14, 6:36 AM

the equivalent code of your code using timedelta will be something like:

``` if not duration:
duration = timedelta(0)
if checkin_date and checkout_date:
chkin_dt = datetime.datetime.strptime(checkin_date, '%Y-%m-%d %H:%M:%S')
chkout_dt = datetime.datetime.strptime(checkout_date, '%Y-%m-%d %H:%M:%S')
dur = chkout_dt - chkin_dt  # dur is timedelta object as a result of "chkout_dt - chkin_dt"
duration = dur
if configured_addition_hours > 0:
additional_hours = abs((dur.seconds / 60) / 60)
duration += timedelta(days=1)
value.update({'value':{'duration':duration.days}})
```
actually dur is timedelta object, as you've got it by subtraction of one date from another(dur = chkout_dt - chkin_dt) and "duration" seems to be extra. you'll need adapt it to your application logic.
Temur
on 11/12/14, 8:14 AM

```duration = dur.days # here I want to update the time difference betwenn two dates how ?
```
- the variable 'dur' is a timedelta object, which is actually represents the time difference betwen two dates... so you've just to use it according your application logic.
Temur
on 11/12/14, 8:27 AM

Thax Temur for your valuabel replay and response..

Odoo
on 11/12/14, 10:52 AM

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

### Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

1 follower(s)

### Stats

 Asked: 11/12/14, 2:27 AM Seen: 1527 times Last updated: 3/16/15, 8:10 AM