无法使用PHP中的Spreadsheet_Excel_Reader从电子表格中读取时间值

时间:2013-10-16 12:39:33

标签: php excel

我正在尝试使用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。

请帮忙。

2 个答案:

答案 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

获取完整的格式类型列表