服务器环境
Redhat Enterprise Linux
PHP 5.3.5
问题
假设我有一个UTC日期和时间,例如2011-04-27 02:45,并且我想将其转换为我的本地时间,即美国/纽约。
三个问题:
1.) 你是否认为下面的代码可以解决这个问题?
<?php
date_default_timezone_set('America/New_York'); // Set timezone.
$utc_ts = strtotime("2011-04-27 02:45"); // UTC Unix timestamp.
// Timezone offset in seconds. The offset for timezones west of UTC is always negative,
// and for those east of UTC is always positive.
$offset = date("Z");
$local_ts = $utc_ts + $offset; // Local Unix timestamp. Add because $offset is negative.
$local_time = date("Y-m-d g:i A", $local_ts); // Local time as yyyy-mm-dd h:m am/pm.
echo $local_time; // 2011-04-26 10:45 PM
?>
2.) 但是,$offset的值是否会自动调整夏令时(DST)?
3.) 如果不会,我应该如何修改代码来自动调整DST?
谢谢 :-)
date("Z")
总是返回时区GMT +0000
,它没有考虑夏令时的修正。 - Marcel Korpel