【发布时间】:2014-10-30 22:38:11
【问题描述】:
所以我有这个代码:
$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!date_api.module/function/date_make_date/6
【问题讨论】:
-
时间戳始终为 UTC。您不能将时区应用于时间戳 - 将其时区视为 0。无论您做什么,它都保持为 0。您要求使用
U格式化的日期 - 手动说明:Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)。您无法从 Unix Epoch for New York 获得秒数。这个数字对于世界上的任何地方都是一样的。现在,如果您使用Y-m-d H:i:s格式化该日期,那么您将获得正确格式化的时间以及纽约的时区偏移量。长话短说——这里没有任何问题。这一切都按预期工作。 -
@N.B. - 请将其发布为答案,而不是评论。
标签: php date datetime timezone datetime-format