You cannot pass strings into relativedelta
. It requires you pass in datetime.datetime
or datetime.date
objects.
Your JSON data contains ISO8601 format timestamps, which is the the most parsable format available. You already have the dateutil
library, just use that to parse the strings first:
import dateutil.relativedelta
import dateutil.parser
def get_diff(url, header) :
enc_data = utils.http_response('get', url, header)['body']
json_data = json.loads(enc_data)['data']
timestamp = dateutil.parser.parse(json_data[0]["timestamp"])
lastModified = dateutil.parser.parse(json_data[0]["lastModified"])
diff = dateutil.relativedelta.relativedelta(lastModified, timestamp)
return diff
Demo:
>>> import dateutil.parser
>>> import dateutil.relativedelta
>>> timestamp = dateutil.parser.parse('2013-09-25T11:48:01.074000')
>>> lastModified = dateutil.parser.parse('2013-09-26T02:59:14.436562')
>>> dateutil.relativedelta.relativedelta(lastModified, timestamp)
relativedelta(hours=+15, minutes=+11, seconds=+13, microseconds=+362562)