我正在尝试使用PHP将excel文件导入我的数据库。 该文件包含一个列,其时间值的格式为H:MM。当我尝试阅读本专栏时,我得到的垃圾值如0.416666666667。
我的代码在这里:
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('CP1252');
$data->setUTFEncoder('mb');
$data->read($filePath);
echo $data->sheets[0]['cells'][$i][$j];
我错过了什么吗? 该列中的值为10:00,但我得到的是0.416666666667。
请帮忙。
答案 0 :(得分:0)
MS Excel单元格中的值是一个序列化的时间戳,它通过格式掩码格式化为人类可读日期/时间,SER不是特别擅长处理
$time = 0.416666666667 * 86400;
$hours = round($time / 3600);
$minutes = round($time / 60) - ($hours * 60);
$seconds = round($time) - ($hours * 3600) - ($minutes * 60);
echo sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
答案 1 :(得分:0)
我看到的时间相当晚,但是为了将来帮助某个人,请说明这个答案。
您可以使用date
函数在单行代码中格式化时间,如下所示:
$testval = $data->sheets[0]['cells'][$i][$j];
//assuming for the sake of example here, time format is HH:MM:SS am/pm
echo date('g:i:s a',mktime(0,0,0)+86400*$testval)
您可以从this page
获取完整的格式类型列表