使用 PHP Excel 进行 Excel 日期转换

2022-08-30 16:13:02

我正在从excel读取日期,该格式为12 / 5 / 2012日/月/年使用此代码来读取.使用 PHP EXCEL

   PHPExcel_Style_NumberFormat::toFormattedString($value['A'],'YYYY-MM-DD' );

它的工作原理像魅力将上述日期“12/5/2012”转换为“2012-12-05”

现在的问题是,如果日期是让我们说18 / 5 / 2012,或者你可以说如果我设置的日期大于12,它给我这个日期18 / 5 / 2012以这种格式18 / 5 / 2012格式化后

我也试过这个东西

      $temp  = strtotime(  PHPExcel_Style_NumberFormat::toFormattedString($value['A'],'YYYY-MM-DD' );
      $actualdate = date('Y-m-d',$temp) ;

这也将日期“12/5/2012”正确转换,但在本例中为18/5/2012,它给出的输出为1970-01-01


答案 1

请使用此公式从Excel日期更改为Unix日期,然后您可以使用“gmdate”在PHP中获取真实日期:

UNIX_DATE = (EXCEL_DATE - 25569) * 86400

要从 Unix 日期转换为 Excel 日期,请使用以下公式:

EXCEL_DATE = 25569 + (UNIX_DATE / 86400)

将此公式放入变量中后,您可以使用此示例在PHP中获取真实日期:

$UNIX_DATE = ($EXCEL_DATE - 25569) * 86400;
echo gmdate("d-m-Y H:i:s", $UNIX_DATE);

答案 2

使用PHPExcel时,您可以使用内置函数:

$excelDate = $cell->getValue(); // gives you a number like 44444, which is days since 1900
$stringDate = \PHPExcel_Style_NumberFormat::toFormattedString($excelDate, 'YYYY-MM-DD');

推荐