小白求助两个日期相减出错
1.想从excel读取日期数据,两个日期相减,但是报错,TypeError: '<' not supported between instances of 'str' and 'float',也不知道哪里格式错了2.假如stime所指向的date是空的话,这种又该如何剔除?
附上源代码:
import xlrd
from datetime import datetime
from xlrd import xldate_as_tuple
#读取Excel文件
workbook = xlrd.open_workbook('D:\pylearning\DG逾期测试数据.xlsx')
#读取Excel文件中的第一个工作表
sheet1=workbook.sheet_by_index(0)
for row in range(1,sheet1.nrows):
#读取Excel表中的时间,并计算时间间隔
stime = datetime(xldate_as_tuple(sheet1.cell_value(row,3),0)).strftime('%Y/%m/%d')
etime = datetime(xldate_as_tuple(sheet1.cell_value(row, 4),0)).strftime('%Y/%m/%d')
#strptime() 函数根据指定的格式把一个时间字符串解析为时间元组
start = datetime.strptime(stime,'%Y/%m/%d')
end = datetime.strptime(etime,'%Y/%m/%d')
time=(end-start).days; #间隔天数
print("%d逾期天数:%f天" %(row,time))
12INT_OVERDUE_DATEDT
ssss2020092820200930
sasa
20200930
aaaa2020092820200930
本帖最后由 qq1151985918 于 2021-3-26 11:41 编辑
你Excel中的日期格式不对
代码改动了很多,你自己对照吧。
import xlrd
from datetime import datetime
from xlrd import xldate_as_tuple
#读取Excel文件
workbook = xlrd.open_workbook('test.xlsx')
#读取Excel文件中的第一个工作表
sheet1=workbook.sheet_by_index(0)
for row in range(1,sheet1.nrows):
#读取Excel表中的时间,并计算时间间隔
stime = sheet1.cell(row, 2).value
etime = sheet1.cell(row, 3).value
#strptime() 函数根据指定的格式把一个时间字符串解析为时间元组
if stime != "" and etime != "":
start = datetime.strptime(stime,'%Y/%m/%d')
end = datetime.strptime(etime,'%Y/%m/%d')
time=(end-start).days; #间隔天数
print("%d逾期天数:%d天" %(row, 本帖最后由 jackz007 于 2021-3-26 11:25 编辑
剔除空格
import xlrd
from datetime import datetime
from xlrd import xldate_as_tuple
workbook = xlrd.open_workbook('D:\pylearning\DG逾期测试数据.xlsx')
sheet1=workbook.sheet_by_index(0)
for row in range(1 , sheet1 . nrows):
if sheet1.cell_value(row , 3) . strip() and sheet1.cell_value(row , 4) . strip(): # 添加此行判断
stime = datetime(xldate_as_tuple(sheet1.cell_value(row,3),0)).strftime('%Y/%m/%d')
etime = datetime(xldate_as_tuple(sheet1.cell_value(row, 4),0)).strftime('%Y/%m/%d')
start = datetime.strptime(stime,'%Y/%m/%d')
end = datetime.strptime(etime,'%Y/%m/%d')
time=(end-start).days; #间隔天数
print("%d逾期天数:%f天" %(row,time)) jackz007 发表于 2021-3-26 11:23
剔除空格
非常感谢! qq1151985918 发表于 2021-3-26 11:11
你Excel中的日期格式不对
非常感谢!已经运行成功了
页:
[1]