第二个 block 应该执行但没有执行。现在我要添加另一个句子,以便堆栈让我进行此编辑。
<?php
$earlier_time = new DateTime('2018-12-16 11:17:30');
$thirty_seconds_later = $earlier_time->add(new DateInterval('PT' . 30 . 'S'));
if ($thirty_seconds_later < $earlier_time) {
echo "left is less than right";
} else if ($thirty_seconds_later > $earlier_time) {
echo "left is greater than right";
}
?>
最佳答案
这是因为当您使用 DateTime()
时,它不是不可变的,所以当您调用 DateTime::add()
时,您更改了 $earlier_time
object 并且您的比较将始终相等(您正在比较同一个对象)。使用DateTimeImmutable()
来解决这个问题。
<?php
$earlier_time = new DateTimeImmutable('2018-12-16 11:17:30');
$thirty_seconds_later = $earlier_time->add(new DateInterval('PT' . 30 . 'S'));
if ($thirty_seconds_later < $earlier_time) {
echo "left is less than right";
} else if ($thirty_seconds_later > $earlier_time) {
echo "left is greater than right";
}
关于php - 日期时间比较 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53804266/