gpt4 book ai didi

php - PHPExcel 中的自定义日期格式

转载 作者:搜寻专家 更新时间:2023-10-31 20:37:15 25 4
gpt4 key购买 nike

在我从 PHP 构建的 excel 文件中,第一行是标题行。我需要将几个日期作为列标题放在那里。每个日期都是(以 dd/mm/yyyy 格式)15/mm/yyyy,从 15/01/2007 开始到 15/12/2018 结束,逐月递增。我的代码是这样的:

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);
}
}

我将日期构建为字符串,将其转换为 unix 时间戳,将其转换为 excel 日期并将其推送到 $header_array 中。然后我在 excel 中绘制单元格:

$ews->fromArray($header_array, ' ', 'A1');

最后我将有日期的单元格格式化为:

$ews->getStyle('U1:EJ1')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY);

问题是:

  1. 实际上,我的代码为每个带有日期的单元格返回“False”;
  2. 我需要添加 PHPExcel 库中未列出的自定义掩码:要在每个单元格中显示的 MM/YYYY。

对于第一个问题:我检查了不同的 SO 问题并关注了 mainly this one .没有运气。

最佳答案

问题在这里:

$periodo = '15/'.$mese.'/'.$anno;
$periodo = strtotime($periodo);

这将给出字符串值 15/1/2015, 15/2/2015... ``15/12/2015 你然后尝试使用 strtotime()` 转换为 unix 时间戳。

如果您阅读 PHP Docs on date formats strtotime() 函数使用,您会看到 / 分隔符告诉 PHP 日期字符串是美国日期格式....即 mm/dd/yyyy 在每种情况下都给出月份值 15`,并且(当然)没有月份 15

要么使用破折号 (-) 而不是 / 来指示欧洲 (dd-mm-yyyy) 而不是美国日期格式

$periodo = '15-'.$mese.'-'.$anno;
$periodo = strtotime($periodo);

或重新排序值以使用美国格式

$periodo = $mese.'/'.'15/'.$anno;
$periodo = strtotime($periodo);

对于问题的第二部分……您几乎可以提供 MS Excel 可识别的任何格式掩码,而不仅限于内置格式;所以:

$ews->getStyle('U1:EJ1')
->getNumberFormat()
->setFormatCode('mm/yyyy');

格式代码只是一个字符串值

关于php - PHPExcel 中的自定义日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32123923/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com