PHPExcel将xls日期时间更改为数字

PHPExcel将xls日期时间更改为数字,php,phpexcel,xls,Php,Phpexcel,Xls,当我上传一个.xls文件到PHPExcel时,我想读取原始数据。 我读过关于使用“getValue()”的内容,它应该会解决这个问题。 但我的情况不是这样。 所以在.xls中我有一个专栏:2015-10-08 11:31 当我用PHPExcel处理它时,我得到了:42285.4799305556 因为PHPExcel首先读取文件,所以我无法使用PHP创建DATETIME对象 PHP for ($row = 2; $row <= $highestRow; ++ $row) { $val=ar

当我上传一个.xls文件到PHPExcel时,我想读取原始数据。
我读过关于使用“getValue()”的内容,它应该会解决这个问题。
但我的情况不是这样。

所以在.xls中我有一个专栏:2015-10-08 11:31
当我用PHPExcel处理它时,我得到了:42285.4799305556

因为PHPExcel首先读取文件,所以我无法使用PHP创建DATETIME对象

PHP

for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array();
    for ($col = 0; $col < $highestColumnIndex; ++ $col) {
        $cell = $worksheet->getCellByColumnAndRow($col, $row);
        $val[] = $cell->getValue();
for($row=2;$row getCellByColumnRow($col,$row);
$val[]=$cell->getValue();
我如何解决这个问题

扔掉了接受的answear我得到了这个代码来为我工作:

for ($row = 2; $row <= $highestRow; ++ $row) {
  $val=array();
  for ($col = 0; $col < $highestColumnIndex; ++ $col) {
    $cell = $worksheet->getCellByColumnAndRow($col, $row);
    $val[] = $cell->getValue();
  }//close 2nd for loop
  //Create and convert xls date to php date
  $val[10] = PHPExcel_Shared_Date::ExcelToPHPObject($val[10]);
  $val[10] = $val[10]->format('Y-m-d H:i:s');
  //query stuff...
}//close first for loop    
for($row=2;$row getCellByColumnRow($col,$row);
$val[]=$cell->getValue();
}//第二圈结束
//创建xls日期并将其转换为php日期
$val[10]=PHPExcel_共享_日期::ExcelToPHPObject($val[10]);
$val[10]=$val[10]->格式('Y-m-dh:i:s');
//查询资料。。。
}//循环先关

没有PHPExcel不会改变它……它已经是一个数字了

MS Excel根据自1900年1月1日起的天数(或如果使用Mac日历,则为1904年1月1日)…将日期/时间存储为序列化时间戳。
42285.4799305556
的值是对应于
2015-10-08 11:31:06
的Excel序列化时间戳。 然后,存储此值的单元格具有数字格式代码,可将其转换为该日期/时间的人工表示形式。如果更改该掩码,则会更改该值的可见外观,但基础序列化值保持不变

如果你这样做

$val[] = $cell->getFormattedValue();
$val[] = PHPExcel_Shared_Date::ExcelToPHP($cell->getValue());
$val[] = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getValue());
然后,PHPExcel将数字格式掩码应用于该序列化的日期/时间戳,并根据存储在Excel文件中的掩码返回一个包含该日期的人类可读格式的字符串

如果你这样做

$val[] = $cell->getFormattedValue();
$val[] = PHPExcel_Shared_Date::ExcelToPHP($cell->getValue());
$val[] = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getValue());
然后,PHPExcel将返回一个unix时间戳,您可以将该时间戳传递给PHP
date()
函数,以按照您的需要进行格式化

如果你这样做

$val[] = $cell->getFormattedValue();
$val[] = PHPExcel_Shared_Date::ExcelToPHP($cell->getValue());
$val[] = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getValue());
然后PHPExcel将返回一个PHP DateTime对象,您可以使用DateTime对象
format()
方法对该对象进行格式化