使用日期时间差异与时区

时间:2013-12-23 12:06:19

标签: php date datetime timezone

我之前发现了一个关于使用时差并获得分钟,小时和天数差异的链接:     How to get time difference in minutes in 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?

3 个答案:

答案 0 :(得分:3)

你的期望没有意义,因为没有区别。 2013-12-01 13:00:36阿姆斯特丹 2013-12-01 12:00:36伦敦是人类历史上完全相同的时间点。您所期望的是伦敦和阿姆斯特丹时区之间的偏移差异(即GMT和GMT + 1相差1),但这与具体时间戳无关。

答案 1 :(得分:1)

您想要计算偏移量。使用DateTimeZone::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

答案 2 :(得分:0)

你很亲密。尝试DateTime :: diff