Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPExcel-使用强制格式获取日期_Php_Excel_Date_Phpexcel - Fatal编程技术网

PHPExcel-使用强制格式获取日期

PHPExcel-使用强制格式获取日期,php,excel,date,phpexcel,Php,Excel,Date,Phpexcel,我在php应用程序中使用PHPexcel。 我使用->getFormattedValue()从excel工作表中获取日期 当我使用excel文件A时,它给出了以下日期格式:05/11/2016 但对于文件B,它给出了以下格式:2017年11月05日 如何强制使用日期格式以便始终获得这样的格式2017年11月5日?如何将其直接从PHPExcel转换为PHPdate?您可以使用getValue()方法从单元格返回原始值 $excelTimestampValue = $objPHPExcel->

我在php应用程序中使用PHPexcel。 我使用
->getFormattedValue()
从excel工作表中获取日期

当我使用excel文件A时,它给出了以下日期格式:
05/11/2016
但对于文件B,它给出了以下格式:
2017年11月05日


如何强制使用日期格式以便始终获得这样的格式
2017年11月5日
?如何将其直接从
PHPExcel
转换为
PHP
date?

您可以使用
getValue()
方法从单元格返回原始值

$excelTimestampValue = $objPHPExcel->getActiveSheet()
    ->getCell('A12')
    ->getValue();
它将返回MS Excel序列化的时间戳值;也就是说,浮点数表示自1900年1月1日(或1904年1月1日,取决于电子表格文件使用的日历)以来的天数。根据该时间戳值,您有许多选项:

将该时间戳转换为unix时间戳,然后可以使用PHP的
date()
函数对其进行格式化

$unixTimestamp = PHPExcel_Shared_Date::ExcelToPHP($excelTimestampValue);
echo date('d-M-Y', $unixTimestamp);
将该时间戳转换为PHP DateTime对象,然后可以使用
format()
方法对其进行格式化

$dto = PHPExcel_Shared_Date::ExcelToPHPObject($excelTimestampValue);
echo $dto->format('d-M-Y');
使用MS Excel日期格式掩码将其直接格式化为字符串

echo PHPExcel_Style_NumberFormat::toFormattedString($excelTimestampValue, 'dd-mmm-yyyy');

您可以使用
getValue()
方法从单元格返回原始值

$excelTimestampValue = $objPHPExcel->getActiveSheet()
    ->getCell('A12')
    ->getValue();
它将返回MS Excel序列化的时间戳值;也就是说,浮点数表示自1900年1月1日(或1904年1月1日,取决于电子表格文件使用的日历)以来的天数。根据该时间戳值,您有许多选项:

将该时间戳转换为unix时间戳,然后可以使用PHP的
date()
函数对其进行格式化

$unixTimestamp = PHPExcel_Shared_Date::ExcelToPHP($excelTimestampValue);
echo date('d-M-Y', $unixTimestamp);
将该时间戳转换为PHP DateTime对象,然后可以使用
format()
方法对其进行格式化

$dto = PHPExcel_Shared_Date::ExcelToPHPObject($excelTimestampValue);
echo $dto->format('d-M-Y');
使用MS Excel日期格式掩码将其直接格式化为字符串

echo PHPExcel_Style_NumberFormat::toFormattedString($excelTimestampValue, 'dd-mmm-yyyy');

如果程序错误地使用1900日历而不是1904日历,日期是否有可能丢失?为什么会丢失日期?Excel文件是否使用1900或1904日历是在加载文件时确定的,并存储在PHPExcel中,因此,当您使用
ExcelToPHP()
ExcelToPHPObject()
转换为unix时间戳或DateTime对象时,它知道使用了哪个日历,并根据PHPExcel知道使用哪个日历?所以,不要害怕。感谢如果程序错误地使用1900日历而不是1904日历,那么日期是否有可能丢失?为什么会丢失日期?Excel文件是否使用1900或1904日历是在加载文件时确定的,并存储在PHPExcel中,因此,当您使用
ExcelToPHP()
ExcelToPHPObject()
转换为unix时间戳或DateTime对象时,它知道使用了哪个日历,并根据PHPExcel知道使用哪个日历?所以,不要害怕。谢谢