我正在从excel读取数据并使用python操作数据。但是日期将以整数形式出现。如何将日期转换回日期格式?
2015年5月15日即将发布为42139.00
答案 0 :(得分:9)
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
如J.F. Sebastian所述,这个答案仅适用于1900/03/01之后的任何日期
编辑:(回答@ R.K)
如果您的excel_date
是浮点数,请使用以下代码:
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)
答案 1 :(得分:2)
在xlrd中它是alaways nums,但您可以使用xldate_as_tuple将其转换为python日期。 http://www.lexicon.net/sjmachin/xlrd.html#xlrd.xldate%5Fas%5Ftuple-function