关于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相比。
答案 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";
}