>我有这个
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
经过的天数。 对于无效日期,它将以字符串形式返回值,而不是数字。
我认为这里有两件事可以工作:
- 检查它是数字还是字符串
- 转换为可读的 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)));
}