[lang-ref] ( example_excel_serial_to_datetime ) ( python )
def test_example_excel_serial_to_datetime():
def excel_serial_to_datetime(serial: float) -> datetime.datetime:
import math
if serial <= 60:
raise ValueError('Not supported: avoid leap year bug')
serial -= 1
days = int(math.floor(serial))
frac = serial - days
dt = datetime.datetime(1899, 12, 31) + datetime.timedelta(days=days)
dt = dt + datetime.timedelta(days=frac)
return dt
assert excel_serial_to_datetime(45984.7723972569 ).strftime(r'%Y/%m/%d %H:%M:%S.%f') == '2025/11/23 18:32:15.122996'
assert excel_serial_to_datetime(45984 ).strftime(r'%Y/%m/%d %H:%M:%S.%f') == '2025/11/23 00:00:00.000000'