我之前发现了一个关于使用时间差和以分钟、小时和天为单位获取差的链接:如何在PHP 中获得以分钟为单位的时差
我试过这个:
$date1 = new DateTime('first day of this month', new DateTimeZone('Europe/Amsterdam'));
$date2 = new DateTime('first day of this month', new DateTimeZone('Europe/London'));
print_r($date1->format('Y-m-d H:i:s'));
print_r($date2->format('Y-m-d H:i:s'));
输出如下:
2013-12-01 13:00:36
2013-12-01 12:00:36
然后使用这个:
$diff = $date2->diff($date1);
print_r($diff);
但后来我在所有的差异中得到了0。我想在不使用strtotime的情况下得到两者的区别。。我是在输出0吗?
您的期望没有意义,因为没有区别2013-12-01 13:00:36阿姆斯特丹和2013-12-01 12:00:36伦敦是人类历史上完全相同的时间点。你所期望的是伦敦和阿姆斯特丹时区之间的偏移差异(即GMT和GMT+1相差1),但这与具体的时间戳无关。
您需要计算偏移量。使用日期时区::getOffset()
$dateTimeZoneAmsterdam = new DateTimeZone("Europe/Amsterdam");
$dateTimeZoneLondon = new DateTimeZone("Europe/London");
$dateTimeAmsterdam = new DateTime('first day of this month', $dateTimeZoneAmsterdam);
$dateTimeLondon = new DateTime('first day of this month', $dateTimeZoneLondon);
$timeOffset = $dateTimeZoneAmsterdam->getOffset($dateTimeLondon);
print_r($timeOffset); // 3600
你很接近。尝试DateTime::diff