Te doy la bienvenida a nuestro espacio, aquí vas a hallar la resolución de lo que buscas.
Solución:
from datetime import datetime
excel_date = 42139
dt = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + excel_date - 2)
tt = dt.timetuple()
print dt
print tt
Como mencionó JF Sebastian, esta respuesta solo funciona para cualquier fecha posterior al 01/03/1900
EDITAR: (en respuesta a @RK)
Si tu excel_date
es un número flotante, usa este código:
def floatHourToTime(fh):
h, r = divmod(fh, 1)
m, r = divmod(r*60, 1)
return (
int(h),
int(m),
int(r*60),
)
excel_date = 42139.23213
dt = datetime.fromordinal(datetime(1900, 1, 1).toordinal() + int(excel_date) - 2)
hour, minute, second = floatHourToTime(excel_date % 1)
dt = dt.replace(hour=hour, minute=minute, second=second)
El módulo xlrd
proporciona una función xldate_as_tuple
para convertir el formato de fecha numérica de Excel a una tupla (year, month, day, hour, minute, nearest_second)
.
A continuación, puede utilizar datetime.datetime
para convertir la tupla en una datetime
-objeto.
from datetime import datetime
import xlrd
excel_date = 44032
python_date = datetime(*xlrd.xldate_as_tuple(excel_date, 0))
Recuerda algo, que tienes la capacidad de esclarecer tu experiencia si te fue útil.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)