pythondatetimetimeepochnanotime

How to convert epoch time with nanoseconds to human-readable?


I have a timestamp in epoch time with nanoseconds - e.g. 1360287003083988472 nanoseconds since 1970-01-01.

The Python datetime objects and conversion methods only support up to millisecond precision.

Is there an easy way to convert this epoch time into human-readable time?


Solution

  • First, convert it to a datetime object with second precision (floored, not rounded):

    >>> from datetime import datetime
    >>> dt = datetime.fromtimestamp(1360287003083988472 // 1000000000)
    >>> dt
    datetime.datetime(2013, 2, 7, 17, 30, 3)
    

    Then to make it human-readable, use the strftime() method on the object you get back:

    >>> s = dt.strftime('%Y-%m-%d %H:%M:%S')
    >>> s
    '2013-02-07 17:30:03'
    

    Finally, add back in the nanosecond precision:

    >>> s += '.' + str(int(1360287003083988472 % 1000000000)).zfill(9)
    >>> s
    '2013-02-07 17:30:03.083988472'