将数字格式的 excel 日期转换为日期格式 python
Convert date from excel in number format to date format python
我正在从 excel 读取数据并使用 python 处理数据。但是日期是以整数形式出现的。如何将日期转换回日期格式?
5/15/2015 即将到来 42139.00
模块 xlrd
提供了一个函数 xldate_as_tuple
将 Excel 的数字日期格式转换为元组 (year, month, day, hour, minute, nearest_second)
.
然后您可以使用 datetime.datetime
将元组转换为 datetime
对象。
from datetime import datetime
import xlrd
excel_date = 44032
python_date = datetime(*xlrd.xldate_as_tuple(excel_date, 0))
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 所述。塞巴斯蒂安,此答案仅适用于 1900/03/01
之后的任何日期
编辑:(回答@R.K)
如果您的 excel_date
是浮点数,请使用此代码:
from datetime import datetime
def floatHourToTime(fh):
hours, hourSeconds = divmod(fh, 1)
minutes, seconds = divmod(hourSeconds * 60, 1)
return (
int(hours),
int(minutes),
int(seconds * 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)
print(dt)
assert str(dt) == "2015-05-15 00:13:55"
我正在从 excel 读取数据并使用 python 处理数据。但是日期是以整数形式出现的。如何将日期转换回日期格式?
5/15/2015 即将到来 42139.00
模块 xlrd
提供了一个函数 xldate_as_tuple
将 Excel 的数字日期格式转换为元组 (year, month, day, hour, minute, nearest_second)
.
然后您可以使用 datetime.datetime
将元组转换为 datetime
对象。
from datetime import datetime
import xlrd
excel_date = 44032
python_date = datetime(*xlrd.xldate_as_tuple(excel_date, 0))
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 所述。塞巴斯蒂安,此答案仅适用于 1900/03/01
之后的任何日期编辑:(回答@R.K)
如果您的 excel_date
是浮点数,请使用此代码:
from datetime import datetime
def floatHourToTime(fh):
hours, hourSeconds = divmod(fh, 1)
minutes, seconds = divmod(hourSeconds * 60, 1)
return (
int(hours),
int(minutes),
int(seconds * 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)
print(dt)
assert str(dt) == "2015-05-15 00:13:55"