我正试图在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');