所以我有这个代码:
$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')
格式化日期,那么你就会得到正确格式化的时间,带有纽约的时区偏移量。
长话短说——这里没有任何问题。一切都按预期进行。