Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'datetime.datetime' object has no attribute 'read'

Users in my app have date_joined fields that are in this format: 2014-12-14 14:46:43.379518+00:00

In order to pass this datetime along to Intercom.io, it must be a UNIX timestamp like this: 1426020706 (this is not the same time, just an example).

I've tried several methods I've read here on Stack Overflow (nothing in this question has the same starting time format: Converting datetime.date to UTC timestamp in Python), but none have worked. mktime() seemed promising, but I got "'datetime.datetime' object has no attribute 'mktime'."

I just tried this:

import time
import dateutil.parser
import member.models import Member

member = Member.objects.get(email="[email protected]")
date_joined = member.date_joined
dt = dateutil.parser.parse(date_joined)
print int(time.mktime(dt.timetuple()))

It returned "'datetime.datetime' object has no attribute 'read'". How can I accomplish this?

like image 860
Michelle Glauser Avatar asked Apr 30 '26 04:04

Michelle Glauser


1 Answers

It seems you have an aware datetime object. If you print it then it looks like:

2014-12-14 14:46:43.379518+00:00

To be sure print(repr(date_joined)).

Converting datetime.date to UTC timestamp in Python shows several ways how you could get the timestamp e.g.,

timestamp = date_joined.timestamp() # in Python 3.3+

Or on older Python versions:

from datetime import datetime

# local time = utc time + utc offset
utc_naive = date_joined.replace(tzinfo=None) - date_joined.utcoffset()
timestamp = (utc_naive - datetime(1970, 1, 1)).total_seconds()

Note: timestamp = calendar.timegm(date_joined.utctimetuple()) would also work in your case but it may return a wrong result silently if you pass it a naive datetime object that represents local time by mistake.

If your input is a time string then convert the time string into a datetime object first.

like image 179
jfs Avatar answered May 02 '26 17:05

jfs



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!