如何在PHP应用程序中处理DST时间偏移?

如何在PHP应用程序中处理DST时间偏移?,php,Php,我必须维护一些旧的浏览器游戏,在这个游戏中,用户有产生资源的行星。当用户打开行星视图时,通过构建行星上次更新与当前时间之间的差异来计算资源量,如下所示: $secondsBetweenUpdate = time() - $lastUpdate; // Timestamps 今晚有时间转换(至少在德国是从夏时制到正常时间,或者就像我们在德语中说的从“夏季时间”到“冬季时间”),所以在“新”凌晨2点和“新”凌晨3点之间,上述差异是负的,因此玩家释放资源而不是获得资源 当然,我可以通过将$secon

我必须维护一些旧的浏览器游戏,在这个游戏中,用户有产生资源的行星。当用户打开行星视图时,通过构建行星上次更新与当前时间之间的差异来计算资源量,如下所示:

$secondsBetweenUpdate = time() - $lastUpdate; // Timestamps
今晚有时间转换(至少在德国是从夏时制到正常时间,或者就像我们在德语中说的从“夏季时间”到“冬季时间”),所以在“新”凌晨2点和“新”凌晨3点之间,上述差异是负的,因此玩家释放资源而不是获得资源

当然,我可以通过将
$secondsbetween update
设置为零来避免松动,如果它变为负值,但是有没有办法正确处理移位?老实说,我甚至不确定什么是正确的——不管秋季从夏时制改为正常时间,还是从正常时间改为夏时制

有谁能给我一些建议来处理这样的班次吗

我看到这样的线索,一个建议是存储所有时间作为祖鲁时间。我将如何做到这一点?我如何才能正确显示用户的时间?这意味着他看到的时间与他在手表上看到的时间相同


我们使用PHP(当然还有CSS和JavaScript)、Mysql,并且部分迁移到cakePHP框架。

在您的服务器上使用GMT时区,它没有时间转换

这样做的方式因系统而异。例如,在Ubuntu中,您可以执行以下操作:

sudo dpkg-reconfigure tzdata
然后选择GMT选项

然后,如果需要显示日期,可以使用PHP的日期库更改时区以满足客户的偏好,例如(对于东部标准时间):


PHP将处理时间转换,例如,由于美国的DST

Ah,所以一个问题是我们的服务器在EST时区运行,因此
time()
出现问题?@bish-正如我所说,您应该更改服务器的时区来解决问题。
$date = new DateTime($lastUpdate);
$date->setTimezone(new DateTimeZone('EST'));