PHP 时区工作不正常
PHP Timezone not working correctly
因此,我们在美国东部夏令时间的部分地区拥有内部服务器 America/New_York
,出于某种原因,此 [SSCCE][1] 代码无法正常工作。
<?php
echo date_default_timezone_get() . " <br />";
$dateCal = "2015-06-22 13:00:00"; // EDT Time
$schedule_date = new DateTime($dateCal, new DateTimeZone("America/Chicago") );
echo $dateCal . " <br />"; // 2015-06-22 13:00:00
echo date_format($schedule_date, 'Y-m-d H:i:s T'); // 2015-06-22 13:00:00 CDT
?>
输出结果为:
UTC
2015-06-22 13:00:00
2015-06-22 13:00:00 CDT
第二次应该是中午 12 点,而不是下午 1 点。
我该如何解决这个问题?
您没有正确处理时区
// set the datetime in the EDT timezone
$schedule_date = new DateTime("2015-06-22 13:00:00", new DateTimeZone("America/New_York") );
echo $schedule_date->format('Y-m-d H:i:s T'). " <br />"; // 2015-06-22 13:00:00
// change it to CDT
$schedule_date->setTimeZone(new DateTimeZone('America/Chicago'));
echo $schedule_date->format('Y-m-d H:i:s T'). " <br />"; // 2015-06-22 12:00:00
因此,我们在美国东部夏令时间的部分地区拥有内部服务器 America/New_York
,出于某种原因,此 [SSCCE][1] 代码无法正常工作。
<?php
echo date_default_timezone_get() . " <br />";
$dateCal = "2015-06-22 13:00:00"; // EDT Time
$schedule_date = new DateTime($dateCal, new DateTimeZone("America/Chicago") );
echo $dateCal . " <br />"; // 2015-06-22 13:00:00
echo date_format($schedule_date, 'Y-m-d H:i:s T'); // 2015-06-22 13:00:00 CDT
?>
输出结果为:
UTC
2015-06-22 13:00:00
2015-06-22 13:00:00 CDT
第二次应该是中午 12 点,而不是下午 1 点。
我该如何解决这个问题?
您没有正确处理时区
// set the datetime in the EDT timezone
$schedule_date = new DateTime("2015-06-22 13:00:00", new DateTimeZone("America/New_York") );
echo $schedule_date->format('Y-m-d H:i:s T'). " <br />"; // 2015-06-22 13:00:00
// change it to CDT
$schedule_date->setTimeZone(new DateTimeZone('America/Chicago'));
echo $schedule_date->format('Y-m-d H:i:s T'). " <br />"; // 2015-06-22 12:00:00