gpt4 book ai didi

即使在设置 date_default_timezone_set 之后,PHPExcel 也会得到错误的时区

转载 作者:可可西里 更新时间:2023-11-01 00:03:20 24 4
gpt4 key购买 nike

我正在使用 http://phpexcel.codeplex.com在我的一个项目中,我遇到了一个问题。我想在单元格中写入 time() 值,我正在这样做:

function writeTimeLine($objActiveSheet, &$lineNumber, $timeStart, $timeEnd, $duration, $category, $client, $date, $comment)
{
$objActiveSheet->setCellValue('A'.$lineNumber, PHPExcel_Shared_Date::PHPToExcel( $timeStart ));
$objActiveSheet->getStyle('A'.$lineNumber)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);
}

$objActiveSheet 是指 $objPHPExcel->getActiveSheet()

Excel 中的结果是:

20:27:39

我在电脑上实际测试时是 16:27:39

所以这是时区的问题(我住在美国东部,时区是 -4)。但是,在使用

设置默认时区后,我包含了 PHPExcel 文件
date_default_timezone_set('America/New_York');

即使有 time() 的 echo ,我也确实看到了正确的时间 (16:27:39)。

这是 PHPExcel 的错误还是我在这里做错了什么?

感谢您的帮助。

最佳答案

与其更改 PHPExcel 库,不如添加时差:

$timeStart + date('Z', $timeStart)                   

比如像这样:

date_default_timezone_set('America/New_York');

function writeTimeLine($objActiveSheet, &$lineNumber, $timeStart, $timeEnd,
$duration, $category, $client, $date, $comment) {

$objActiveSheet->setCellValue(
'A' . $lineNumber,
PHPExcel_Shared_Date::PHPToExcel($timeStart + date('Z', $timeStart))
);

$objActiveSheet
->getStyle('A' . $lineNumber)
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);

}

关于即使在设置 date_default_timezone_set 之后,PHPExcel 也会得到错误的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10887967/

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