PHPExcel_Shared_Date::ExcelToPHP($val) 如果日期无效$val则返回默认日期



>我有这个

new DateTime(date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($val))).

如果日期是有效日期(如1/1/2017(,一切正常,但是如果我在Excel中放置像'30/2/2000'这样的日期,上面的函数将返回'1900-01-30 00:00:00.000000'.如果不是有效日期,有没有办法告诉该函数不转换?

例如,如果值不是有效日期,new DateTime返回FALSE,但ExcelToPHP总是返回a date,我不需要它。

=== 编辑 ===

显然,如果Excel单元格的格式为日期,则我在PHP中收到的值是一个数字:从01-01-1900经过的天数。 对于无效日期,它将以字符串形式返回值,而不是数字。

我认为这里有两件事可以工作:

  1. 检查它是数字还是字符串
  2. 转换为可读的 PHP 格式并验证该结果

我选择第二个:

$stringDate = PHPExcel_Style_NumberFormat::toFormattedString($val, 'DD-MM-YYYY');
if (strtotime($stringDate) === false) {
// throw error or do something if is not a valid date
}

您可以使用strtotime()方法检查日期,然后将对话协调添加到条件中

if(strtotime($val) === false)
{
//INVALID DATE
}
else
{
new DateTime(date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($val)));  
}

最新更新