Fetching datetime from float in Python
Looks like an Excel datetime format, called serial date. Quick and dirty way to convert it:
>>> import datetime
>>> serial = 43111.0
>>> seconds = (serial - 25569) * 86400.0
>>> datetime.datetime.utcfromtimestamp(seconds)
datetime.datetime(2018, 1, 11, 0, 0)
Try this:
from datetime import datetime
datetime.fromtimestamp(*your_timestamp_here*).strftime('%Y-%m-%d')
import datetime, time
print datetime.datetime.fromtimestamp(time.time())
print datetime.datetime.fromtimestamp(43111.0)
So, with a little math:
If 43111 is 11 January 2018, then 0 is 30th December 1899.
Python has datetime.date.fromordinal()
Return the date corresponding to the proleptic Gregorian ordinal, where January 1 of year 1 has ordinal 1. ValueError is raised unless 1 <= ordinal <= date.max.toordinal(). For any date d, date.fromordinal(d.toordinal()) == d.
If you use that with an offset, you have:
>>> dateoffset = 693594
>>> datetime.date.fromordinal(dateoffset + 43111)
datetime.date(2018, 1, 11)
Hope that helps, even if it does not work for floats.
Here is another way
from pyxlsb import convert_date
convert_date(value)
You can use
format(convert_date(value), '%m/%d/%Y')
if you want to format it.