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?
Convert from epoch to human-readable dateString date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (epoch*1000)); Epoch in seconds, remove '*1000' for milliseconds. myString := DateTimeToStr(UnixToDateTime(Epoch)); Where Epoch is a signed integer. Replace 1526357743 with epoch.
nanoseconds: A real number represents epoch timestamp in nanoseconds. Datetime that occurs before the epoch time (1970-01-01 00:00:00) has a negative timestamp value.
The Unix epoch (or Unix time or POSIX time or Unix timestamp) is the number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT), not counting leap seconds (in ISO 8601: 1970-01-01T00:00:00Z).
You can take an epoch time divided by 86400 (seconds in a day) floored and add 719163 (the days up to the year 1970) to pass to it. Awesome, this is as manual as it gets.
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'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With