使用时区的日期时间差异



我之前发现了一个关于使用时间差和以分钟、小时和天为单位获取差的链接:如何在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

相关内容

  • 没有找到相关文章

最新更新