Php电子表格日期::PHPToExcel()添加时间



我正试图在Excel文件中添加一个不包含时间部分的日期字段。

这是我当前的代码:

$dt = !empty($date) ? Date::PHPToExcel(DateTime::createFromFormat('Y-m-d', $date)) : null;
$spreadsheet->getActiveSheet()->setCellValue("A1", $dt);
$spreadsheet->getActiveSheet()->getStyle("A1")->getNumberFormat()->setFormatCode('yyyy-mmm-dd');

不知何故,时间被添加到日期中,尽管它在打印的内容上不可见,但当您单击单元格时,它也包含时间部分。我只想要约会,如何防止这种情况发生?

我也试过:

$dt = !empty($date) ? $date : null;
$spreadsheet->getActiveSheet()->setCellValue("A1", $dt);
$spreadsheet->getActiveSheet()->getStyle("A1")->getNumberFormat()->setFormatCode('yyyy-mmm-dd');

但是这个显示了YYYY-MM-DD,尽管我将数字格式设置为YYYY-MMM-DD

显然,如果您没有指定,DateTime::createFromFormat()会添加当前时间。

解决方案是在格式中添加!,将所有字段重置为零,就像我从这个注释中得到的值一样。

$dt = !empty($date) ? Date::PHPToExcel(DateTime::createFromFormat('!Y-m-d', $date)) : null;
$spreadsheet->getActiveSheet()->setCellValue("A1", $dt);
$spreadsheet->getActiveSheet()->getStyle("A1")->getNumberFormat()->setFormatCode('yyyy-mmm-dd');

最新更新