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



关于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相比是否已经过了午夜。

只检查两个日期是否在同一天就足够了吗?

$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";

我看不出这种情况会不起作用,因为夏令时通常会在凌晨2点改变时钟(对吧?)。

由于您只使用时间构建DateTime对象,因此您真正想做的是查看$end是否早于$start。您可以为此使用getTimestamp函数。

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

我最终做到了这一点,这要归功于Pekka和PFHayes的想法:

$start = strtotime('13:00');
$end = strtotime('01:00');
if ($end < $start)
{
    echo "Midnight has passed";
}
else
{
    echo "Midnight has not passed";
}

相关内容

  • 没有找到相关文章

最新更新