# How to convert integer timestamp to Python datetime

### Question

I have a data file containing timestamps like "1331856000000". Unfortunately, I don't have a lot of documentation for the format, so I'm not sure how the timestamp is formatted. I've tried Python's standard `datetime.fromordinal()` and `datetime.fromtimestamp()` and a few others, but nothing matches. I'm pretty sure that particular number corresponds to the current date (e.g. 2012-3-16), but not much more.

How do I convert this number to a `datetime`?

1
153
10/24/2016 4:31:59 PM

`datetime.datetime.fromtimestamp()` is correct, except you are probably having timestamp in miliseconds (like in JavaScript), but `fromtimestamp()` expects Unix timestamp, in seconds.

Do it like that:

``````>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp / 1e3)
``````

and the result is:

``````>>> date
datetime.datetime(2012, 3, 16, 1, 0)
``````

EDIT: J.F. Sebastian correctly suggested to use true division by `1e3` (float `1000`). The difference is significant, if you would like to get precise results, thus I changed my answer. The difference results from the default behaviour of Python 2.x, which always returns `int` when dividing (using `/` operator) `int` by `int` (this is called floor division). By replacing the divisor `1000` (being an `int`) with the `1e3` divisor (being representation of `1000` as float) or with `float(1000)` (or `1000.` etc.), the division becomes true division. Python 2.x returns `float` when dividing `int` by `float`, `float` by `int`, `float` by `float` etc. And when there is some fractional part in the timestamp passed to `fromtimestamp()` method, this method's result also contains information about that fractional part (as the number of microseconds).