How do I create a datetime in Python from milliseconds?

I can create a similar Date object in Java by java.util.Date(milliseconds). How do I create the comparable in Python?

Allocates a Date object and initializes it to represent the specified number of milliseconds since the standard base time known as "the epoch", namely January 1, 1970, 00:00:00 GMT.


Solution 1:

Just convert it to timestamp

datetime.datetime.fromtimestamp(ms/1000.0)

Solution 2:

What about this? I presume it can be counted on to handle dates before 1970 and after 2038.

target_datetime_ms = 200000 # or whatever
base_datetime = datetime.datetime(1970, 1, 1)
delta = datetime.timedelta(0, 0, 0, target_datetime_ms)
target_datetime = base_datetime + delta

as mentioned in the Python standard lib:

fromtimestamp() may raise ValueError, if the timestamp is out of the range of values supported by the platform C localtime() or gmtime() functions. It’s common for this to be restricted to years in 1970 through 2038.

Very obviously, this can be done in one line:

target_dt = datetime(1970, 1, 1) + timedelta(milliseconds=target_dt_ms)