PHP日期时间戳时区未正确转换


PHP date timestamp timezone not converted properly

所以我有这个代码:

$timestamp = 1414708099;
echo $timestamp;
$date = date_make_date($timestamp, 'UTC', 'datestamp');
date_timezone_set($date, timezone_open('America/New_York'));
$timestamp = $date->format('U');
echo '<br>';
echo $timestamp;

其被认为将初始时间戳的时区从UTC转换为纽约。

但这最终会打印

1414708099<br>1414708099

因此时区没有改变。。。

我做错了什么?

顺便说一句,它还使用Drupal 6 date_api.module:http://drupalcontrib.org/api/drupal/contributions!日期date_api.module/function/date_make_date/6

根据注释

时间戳总是UTC。您不能将时区应用于时间戳-请将其时区视为0。无论你做什么,它都保持0。您要求使用U格式的日期-手动状态如下:

U: 自Unix大纪元(1970年1月1日00:00:00 GMT)以来的秒数。

你无法从Unix Epoch获得纽约的秒数。这个数字在世界上任何地方都是一样的。现在,如果你使用$date->format('Y-m-d H:i:s')格式化日期,那么你就会得到正确格式化的时间,带有纽约的时区偏移量。

长话短说——这里没有任何问题。一切都按预期进行。