如何在PHP 5.2中使用DateTime :: diff()和DateTime :: format('%R')?

时间:2011-05-27 13:37:07

标签: php datetime diff

关于DateTime :: diff()有很多问题(和解决方案),但是我没有找到任何解决方案来代码:

$start = new DateTime('13:00');
$end = new DateTime('02:00');

$difference = $start->diff($end);

if ($difference->format('%R') === '-')
{
    $passedMidnight = true;
}
else
{
    $passedMidnight = false;
}

这基本上就是我在PHP 5.2中寻找的方法:一种方法,可以找出$ end是否在午夜时段与$ start相比。

3 个答案:

答案 0 :(得分:0)

仅检查两个日期是否在同一天是不够的?

$start = new DateTime('13:00');
$end = new DateTime('02:00');

if ($start->format('Y-m-d') == $end->format('Y-m-d'))
 echo "Midnight has NOT passed";
else
 echo "Midnight has passed";

我看不到这种情况不起作用的情况,因为DST通常在早上将时钟转换为2(对吗?)。

答案 1 :(得分:0)

由于您只是用几次构建DateTime对象,那么您真正想要做的是查看$ end是否在当天早于$ start。您可以使用getTimestamp函数。

if ($end->getTimestamp() < $start->getTimestamp()) {
    echo "Midnight has passed";
} else {
    echo "Midnight has not passed";
}

答案 2 :(得分:0)

我最终做到了这一点,感谢Pekka和PFHayes的想法:

$start = strtotime('13:00');
$end = strtotime('01:00');

if ($end < $start)
{
    echo "Midnight has passed";
}
else
{
    echo "Midnight has not passed";
}