可能你知道为什么这不起作用(试图在另一个时间区域接收timeStamp):
$from_zone = 'Europe/Kiev';
$to_zone = 'US/Eastern';
$stamp = 1383897599;
$from_tz = new DateTimeZone($from_zone);
$to_tz = new DateTimeZone($to_zone);
$dateTime = new DateTime(null, $from_tz);
$dateTime->setTimestamp($stamp);
$dateTime->setTimeZone($to_tz);
$new_stamp = $dateTime->getTimestamp();
echo $new_stamp;
返回初始timeStamp而不是新的,我做错了什么? :\
答案 0 :(得分:1)
UNIX时间戳根据UTC定义。无论时区如何,时间戳都将始终返回相同的日期/时间。
来自Wikipedia:
Unix时间或POSIX时间是用于描述时间瞬间的系统,定义为自1970年1月1日星期四起午夜协调世界时(UTC)以来经过的秒数 p>
答案 1 :(得分:-1)
时间戳是自1970年1月1日00:00:00 UTC以来经过的秒数。更改时区不会影响该值,time()函数也会返回与设置的时区无关的相同值。
如果您需要不同的时间戳,请尝试使用strtotime($dateString),因为它会受到时区的影响,如下所示:
date_default_timezone_set('Europe/Kiev');
$date = date('Y-m-d H:i:s');
echo $date . ' - ' . strtotime($date) . '<br />';
date_default_timezone_set('US/Eastern');
echo $date . ' - ' . strtotime($date) . '<br />';
打印:
2013-11-08 20:48:47 - 1383936527
2013-11-08 20:48:47 - 1383961727