python 读取execl的时候 日期格式读出来的是一串数字,怎么才能还原成日期格式,我的日期是datetime类型

 我来答
0xCEA4
推荐于2018-02-26 · TA获得超过310个赞
知道小有建树答主
回答量:444
采纳率:100%
帮助的人:313万
展开全部
你是用pyExcelerator还是xlrd读的excel?如果是xlrd那它自带一个xldate_as_tuple函数,可以转成datetime,比如:

from datetime import datetime
from xlrd import xldate_as_tuple

d=datetime(*xldate_as_tuple(x,0))#x就是你那串数字的变量

如果是用pyExcelerator,那好象它没有类似的函数,可以用下面这个函数:

def xldate_as_datetime(xldate, datemode=0):
if datemode not in (0, 1):
raise XLDateBadDatemode(datemode)
if xldate == 0.00:
return datetime.time(0, 0, 0)
if xldate < 0.00:
raise XLDateNegative(xldate)
xldays = int(xldate)
frac = xldate - xldays
seconds = int(round(frac * 86400.0))
assert 0 <= seconds <= 86400
if seconds == 86400:
seconds = 0
xldays += 1
#if xldays >= _XLDAYS_TOO_LARGE[datemode]:
# raise XLDateTooLarge(xldate)
if xldays == 0:
# second = seconds % 60; minutes = seconds // 60
minutes, second = divmod(seconds, 60)
# minute = minutes % 60; hour = minutes // 60
hour, minute = divmod(minutes, 60)
return datetime.time(hour, minute, second)
if xldays < 61 and datemode == 0:
raise XLDateAmbiguous(xldate)
return (
datetime.datetime.fromordinal(xldays + 693594 + 1462 * datemode)
+ datetime.timedelta(seconds=seconds)
)

用法:
d=xldate_as_datetime(x)#x就是你那串数字的变量
晓剑飘津家19
2020-11-04
知道答主
回答量:4
采纳率:0%
帮助的人:2268
展开全部
import datetime
#设置初始日期
now = datetime.date(1900,1,1)
#获取excel表格的日期,获取过来就会自动变为数字,该数字为获取日期的时间序号,1为初始日期1900年1月1日,此后依次类推
#我这里因为是试验就直接填写了日期在excel中转换后的数字,此数字为2020-11-4日
d=44139
#将获取的数字序列-2则换算出从初始日期到现在的天数
d1=d-2
#用初始日期加上该日期距离初始日期的天数
date = now + datetime.timedelta(days =d1)
print(now)
print(date)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TTWOYONGA
推荐于2021-01-19 · TA获得超过255个赞
知道答主
回答量:179
采纳率:100%
帮助的人:91.8万
展开全部
如果用xlrd data=open_workbook('文件路径') ;table=data.sheets()[0];cell=table.cell(i,r).value
cell读取出来的日期是类似0.7*****的float值;转换 :xlrd.xldate_as_tuple(cell,data.datetime)读取出来的是(0,0,0,小时,分,秒)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式