PHP DateTime时间戳不正确



我有一个时间戳,我试图将其转换为另一个时区。我需要在这样做时考虑DST进行考虑。

我使用的代码如下:

    $date = new DateTime("@".$timestamp); 
    echo $date->format('Y-m-d H:i:s')."rn";
    $date->setTimezone(new DateTimeZone('Europe/Paris'));   
    echo $date->format('Y-m-d H:i:s')."rn";  // Pacific time
    $date->setTimezone(new DateTimeZone('Europe/Athens'));
    echo $date->format('Y-m-d H:i:s')."rn";  // Berlin time  

输出(正确)是:

 2014-01-30 20:24:48
 2014-01-30 21:24:48
 2014-01-30 22:24:48

但是,如果我将格式更改为" u",那是在日期()中使用的值以获取时间戳,则以下是输出:

1391113488
1391113488
1391113488

为什么将时间戳不带有时区偏移量?

DateTime::getOffset将在几秒钟内为您提供偏移,而DateTime::getTimestamp将为您提供 UNIX TIMESTAMP,它始终为UTC (像$datetime->format('U')一样给您一样。

因此,为了获得偏移的"时间戳",请执行此操作:

$timestampWithOffset = $date->getTimestamp() + $date->getOffset();

相关内容

  • 没有找到相关文章

最新更新