所以我有这段代码:
$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
因此,时区没有改变......
我做错了什么?
btw它还使用了Drupal 6 date_api.module:http://drupalcontrib.org/api/drupal/contributions!date!date_api.module/function/date_make_date/6
答案 0 :(得分:3)
时间戳始终为UTC 。您无法将时区应用于时间戳 - 将其时区视为0.无论您做什么,它都会保留为0.您要求使用U格式化日期 - 手动说明:
U:Unix时代以来的秒数(1970年1月1日00:00:00 GMT)。
你无法从Unix Epoch获得纽约的秒数。这个数字对于世界上任何一个地方都是一样的。
现在,如果您使用$date->format('Y-m-d H:i:s')
格式化该日期,那么您将获得具有纽约时区偏移的正确格式化时间。
长话短说 - 这里没有任何问题。这一切都按预期工作。