PHPExcel中的自定义日期格式
在我的excel文件中,我从PHP构建的第一行是标题行。我需要把几个日期作为列标题。每个日期(以dd/mm/yyyy格式)为15/mm/yyyy,从2007年1月15日开始,到2018年12月15日结束,逐月递增。 我的代码是:PHPExcel中的自定义日期格式,php,phpexcel,strtotime,Php,Phpexcel,Strtotime,在我的excel文件中,我从PHP构建的第一行是标题行。我需要把几个日期作为列标题。每个日期(以dd/mm/yyyy格式)为15/mm/yyyy,从2007年1月15日开始,到2018年12月15日结束,逐月递增。 我的代码是: for($anno = $annoMin; $anno<=$annoMax; $anno++){ for($mese = 1; $mese <= 12; $mese++){ $mese = sprintf("%02s", $mese)
for($anno = $annoMin; $anno<=$annoMax; $anno++){
for($mese = 1; $mese <= 12; $mese++){
$mese = sprintf("%02s", $mese);
$periodo = '15/'.$mese.'/'.$anno;
$periodo = strtotime($periodo);
$periodo = PHPExcel_Shared_Date::PHPToExcel($periodo);
array_push($header_array,$periodo);
}
}
最后,我将有日期的单元格格式化为:
$ews->getStyle('U1:EJ1')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY);
问题是:
$periodo = '15/'.$mese.'/'.$anno;
$periodo = strtotime($periodo);
这将给出一个字符串值15/1/2015
,15/2/2015
``2015年12月15日您正试图使用strotime()转换为unix时间戳
如果您阅读strotime()
函数使用的字符串,您将看到/
分隔符告诉PHP日期字符串是US date格式。。。。i、 e.mm/dd/yyyy在每种情况下都给出一个月值
15',当然,没有第15个月
使用破折号(-
)而不是/
来表示欧洲(dd-mm-yyyy
)而不是美国日期格式
$periodo = '15-'.$mese.'-'.$anno;
$periodo = strtotime($periodo);
或者重新排序值以使用US格式
$periodo = $mese.'/'.'15/'.$anno;
$periodo = strtotime($periodo);
关于你问题的第二部分。。。。您可以提供MS Excel识别的几乎任何格式掩码,而不限于内置格式;因此:
$ews->getStyle('U1:EJ1')
->getNumberFormat()
->setFormatCode('mm/yyyy');
格式代码只是一个字符串值侧注:我可以去掉单元格中的时间吗?我在公式栏中看到的值是这样的:“14/01/2008 23:00:00”,我只想看到“14/01/2008”?请确保您使用的是GMT/UTC。。。。通过设置时区;或者您可以选择使用gmmktime()
和gmdate()
而不是strotime()
;或者改为使用PHP的DateTime对象和UTC DateTimeZone
$ews->getStyle('U1:EJ1')
->getNumberFormat()
->setFormatCode('mm/yyyy');