【发布时间】:2018-01-15 13:58:53
【问题描述】:
我有这个
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
}
【问题讨论】: