开始了解 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
。
有没有一种简单的方法可以将该时间转换为美国/东部时间?我是否必须进入 getTransitions,找到 DST 开始的日期并手动进行计算?这仅在每个春季/秋季切换的第一天很重要。