1
开始学习有关php dateTime & dateTimezone对象。假设美国/东部的服务器在另一个时区创建一个时间,目标是在服务器时间内将时间(即伦敦)转换并存储在服务器上(美国/东部)。使用此代码:如何计算正确的偏移量?
$runTime = '2013-04-10 07:45:00';
$serverTimezone = new DateTimeZone ('US/Eastern');
$checkinTimezone = new DateTimeZone ('Europe/London');
$checkinTime = new DateTime ($runTime, $serverTimezone);
$offset = $serverTimezone -> getOffset ($checkinTime);
echo "<br/><pre>";
echo 'London: ' . date ('Y-m-d H:i', $checkinTime -> format ('U')) . "<br/>";
echo "<br/>offset: " . $offset . "<br/>";
echo 'Local: ' . date ('Y-m-d H:i', $checkinTime -> format ('U') + $offset);
-14400总是在今天之前或之后(今天早些时候欧洲转换为DST)返回。在啊哈的时刻,我发现getOffset的说明文件为Returns the timezone offset from GMT
。
有没有简单的方法将时间转换为US/Eastern?我是否必须进入getTransitions,查找DST开始的日期并手动进行计算?这只在每个春季/秋季开关的第一天就很重要。
你总是想成为无知服务器的时区。从UTC时间开始,然后转换为目标时区。我不是PHP开发人员,所以我不能提供编码解决方案,但这是一般时区的最佳实践。 –
@MattJohnson伟大的想法开始W/UTC和转换。这在很大程度上是个问题...... – David