检查两个PHP日期时间对象是否设置为同一日期(忽略时间)

2022-08-30 09:30:24

我只想比较2个datetime对象,看看它们是否设置为相同的日期,但我不关心对象的时间部分。目前,我正在使用date_format命令来提取像“Y-m-d”这样的字符串来比较,但这似乎很尴尬。

$firstDate = date_format($firstDateTimeObj, 'Y-m-d');
$secondDate = date_format($secondDateTimeObj, 'Y-m-d');

if !($firstDate == $secondDate) {

// some code
}

我是编程和PHP的新手,所以任何指针都值得赞赏。


答案 1

使用对象语法!

$firstDate = $firstDateTimeObj->format('Y-m-d');
$secondDate = $secondDateTimeObj->format('Y-m-d');

你和你的if表情非常接近,但是!运算符必须在括号内。

if (!($firstDate == $secondDate))

这也可以表示为

if ($firstDate != $secondDate)

答案 2

我的第一个答案是完全错误的,所以我要开始一个新的答案。

如其他答案所示,最简单的方法是使用 。这几乎肯定是要走的路。但是,还有另一种方法可以利用 DateTime 类的全部功能。用于创建一个实例,然后检查其属性:如果是,则为同一天。date_formatdiffDateIntervald0

// procedural
$diff = date_diff($firstDateTimeObj, $secondDateTimeObj);

// object-oriented
$diff = $firstDateTimeObj->diff($secondDateTimeObj);

if ($diff->format('%a') === '0') {
    // do stuff
} else {
    // do other stuff
}

请注意,对于此实例,这几乎肯定是过度的,但是如果您想在将来执行更复杂的操作,这可能是一种有用的技术。


推荐