这两天传日期的时候遇到比较奇葩的错误,在excel表中的日期是同样的数据格式,但是两个表导入时候有一个日期是需要转换之后导入而有一个可以直接导入。忘记截图,需要转换的直接输出是40000+的数字(以今天的日期来说是这样的),代表1900-1-1到这一天日期的天数
日期转换代码
$变量= gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCellByColumnAndRow($col,$row)->getValue())); //格式化日期
不知道有没有小伙伴遇到同样的错误哈哈,为了解决这两个错误,想了一个办法,思路是判断获取的是字符串还是数字,如下图所示拿它做出比较,是字符串则不能这样判断一定会执行else就达到了目的,具体代码如下:
[php] view plain copy
- if($col==1){//将日期列单独拿出来判断,做格式化操作,再存到数组
- $date=$sheet->getCellByColumnAndRow($col,$row)->getValue();//先将这个单独拿出来存好用来判断
- if($date>4000){//判断到底拿到的是数字还是字符串,是数字就先转换,格式化日期,这里的是我自己存值的数组哈哈哈,写自己的就好
- $ExamPaper_arr[$i][$col] = gmdate("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($sheet->getCellByColumnAndRow($col,$row)->getValue())); //格式化日期
- }
- else{//不是数字就可以开心的直接执行了
- $ExamPaper_arr[$i][$col]=$sheet->getCellByColumnAndRow($col,$row)->getValue();//将每一个单元格存为二维数组,行对应excel的行,列对应列
- }
- }
- else{//不是数字就可以开心的直接执行了
- $ExamPaper_arr[$i][$col]=$sheet->getCellByColumnAndRow($col,$row)->getValue();//将每一个单元格存为二维数组,行对应excel的行,列对应列
- }
嘻嘻,刚开始学习不会更好的办法,暂时只能想到这个,欢迎批评指正~
发现代码里面数字是4000,噗!其实也没所谓数字是多少,只要代表是数字就可以了,还有不要大于1970-01-01这天到今天的天数哈哈哈,唠叨完毕~
本文暂时没有评论,来添加一个吧(●'◡'●)