Mic*_*lix 3 php timezone phpexcel
我在我的一个项目中使用了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);
}
Run Code Online (Sandbox Code Playgroud)
$ objActiveSheet引用$ objPHPExcel-> getActiveSheet()
Excel中的结果是:
20点27分39秒
当我在电脑上实际测试时,它是16:27:39
所以这是时区的问题(我住在东美洲,这是-4).但是,我在设置默认时区后包含PHPExcel文件
date_default_timezone_set('America/New_York');
Run Code Online (Sandbox Code Playgroud)
即使有时间的回声()我也看到了正确的小时(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);
}
授予相当旧,但想提供另一种解决方案。
如果您不想编辑库源文件,因为PHPExcel_Shared_Date::PHPToExcel
(1.7.8+)接受整数时间戳或 DateTime 对象,您可以轻松地将整数时间戳转换为 DateTime 对象。
然后 PHPToExcel 在调用 $dateValue->format() 时将使用 DateTime 对象的时区。
DateTime 时区仅在构造/修改时计算,而不在格式上计算。
PHP 5 <= 5.2
$timeStart = new DateTime(date("c", $timeStart));
PHPExcel_Shared_Date::PHPToExcel($timeStart);
Run Code Online (Sandbox Code Playgroud)
PHP 5 >= 5.3
$date = new DateTime();
PHPExcel_Shared_Date::PHPToExcel($date->setTimestamp($timeStart));
Run Code Online (Sandbox Code Playgroud)
笔记
DateTime 构造在使用 时使用 UTC 时区
'@' . $timestamp
。
setTimestamp
使用环境当前时区。但
setTimestamp
直到 5.3 才可用
在开发交钥匙解决方案时,通常最好的做法是尝试避免任何更改或尝试确定部署环境的行为。我经常需要在其他应用程序中修复的一个很好的例子是date('Y-m-d', PHP_INT_MAX);
. 这在 32 位系统上可以正常工作,但不能在 64 位系统上(Windows 除外)。在不同环境之间产生意想不到的结果。
归档时间: |
|
查看次数: |
7994 次 |
最近记录: |