How do I create a datetime in Python from milliseconds?


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

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.

Asked By: Joshua



Just convert it to timestamp

Answered By: vartec

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)

… not only was this obvious from my answer, but the 2015 comment by jfs is also highly misleading, because it calls the variable utc_time.

Er no: it’s not "time", it’s datetime, and it’s most definitely NOT UTC. The datetime with which we’re concerned here is a "timezone-naive" datetime, as opposed to a timezone-aware datetime. Therefore definitely NOT UTC.

Search on this if you’re not familiar with the issue.

Answered By: mike rodent

Bit heavy because of using pandas but works:

import pandas as pd
pd.to_datetime(msec_from_java, unit='ms').to_pydatetime()
Answered By: mde
import pandas as pd

Date_Time = pd.to_datetime(df.NameOfColumn, unit='ms')
Answered By: Artem Krylov

Converting millis to datetime (UTC):

import datetime
time_in_millis = 1596542285000
dt = datetime.datetime.fromtimestamp(time_in_millis / 1000.0, tz=datetime.timezone.utc)
Answered By: cahen
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.