如何根据日期正确地将unix时间戳转换为BST或GMT?

问题描述:

我可以很容易地写出一个笨拙的功能来做到这一点,但是有没有一种简单的方法可以从时间戳中获得“正确”的本地英国日期/时间,而不是总是格林尼治标准时间(在一年中的某些时候 - 比如现在 - 会在一小时后)。如何根据日期正确地将unix时间戳转换为BST或GMT?

感谢

+1

是,通过设置[时区](http://www.php.net/manual /en/function.date-default-timezone-set.php) –

+1

使用时区“欧洲/伦敦”,并让PHP使用'DateTime'对象或更早的'date' API来完成工作...... – deceze

当英国通过改变今年时区的变化,所以我不建议尝试自己实现逻辑的确切日期。您可以初始化一个DateTime对象为正确的时区(欧洲/伦敦),然后将其设置为您的时间戳:

<?php 
$timestamp = 1500000000; 

$dateTime = new \DateTime(null, new DateTimeZone('Europe/London')); 
$dateTime->setTimestamp($timestamp); 

echo $dateTime->format('Y-m-d H:i:s'); 

// 2017-07-14 03:40:00