0

我正在尝试将一个 excel 文件导入我的 PHP 数据库。该文件包含一个具有 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。

请帮忙。

4

2 回答 2

1

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);
于 2013-10-16T14:13:07.843 回答
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)

您可以从此页面获取格式类型的完整列表

于 2015-08-14T05:43:26.290 回答