PHP时间戳慢一个小时

Posted

技术标签:

【中文标题】PHP时间戳慢一个小时【英文标题】:PHP timestamp an hour slow 【发布时间】:2018-03-29 09:48:34 【问题描述】:

我正在研究一个用普通 php 编写的古老系统。

我遇到了一些时间转换问题。

在下面的示例中,我希望时间戳和“漂亮日期”相互反映:

<?php
date_default_timezone_set( 'Europe/London' );

$timestamp = 1509062400; //Friday, October 27, 2017 12:00:00 AM

$date = new DateTime();
$date->setTimezone( new DateTimeZone( 'Europe/London' ) );
$date->setTimestamp( $timestamp + 3601 );
$date->setTime( 0, 0 );

echo $date->getTimestamp();
echo '<br/>';
echo $date->format( 'Y-m-d H:i:s' );

但是,在服务器上运行此脚本时,结果如下:

Timestamp: 1509058800
Pretty Date: 2017-10-27 00:00:00

漂亮的日期代表 10 月 27 日 00:00,但时间戳(根据 epochconvertor)代表 10 月 26 日 23:00。

我不确定为什么时间戳慢了一个小时。有人可以帮忙吗?

【问题讨论】:

setTime(0, 0) 将时间设置为00:00:00 这正是我想要的......? 如果下一行完全覆盖$date-&gt;setTimestamp( $timestamp + 3601 ); 的目的是什么? 考虑客户时区。 epoch 转换器给出的时间戳没有考虑时区,如果你选择了时区,你可以看到结果是正确的:epochconverter.com/… 【参考方案1】:

如果您在伦敦,那么您的时间戳很可能是英国夏令时。纪元将在格林威治标准时间。 BST 比格林威治标准时间早一小时。

【讨论】:

以上是关于PHP时间戳慢一个小时的主要内容,如果未能解决你的问题,请参考以下文章

php 将时间戳转换为秒(2 小时 12 分钟或 2:12:00)

php将时间戳转换成几小时前的格式封装

php将时间戳转换成几小时前的格式封装

PHP:从时间戳产生相对日期/时间

PHP 时间戳转换成 已读文本:刚刚几小时前几分钟前昨天

PHP 时间戳转换成 已读文本:刚刚几小时前几分钟前昨天