我只想比较2个日期时间对象,看它们是否设置为相同的日期,但我不关心该对象的时间组件.目前我正在使用date_format命令来提取像'Ymd'这样的字符串进行比较,但这看起来很尴尬.
$firstDate = date_format($firstDateTimeObj, 'Y-m-d');
$secondDate = date_format($secondDateTimeObj, 'Y-m-d');
if !($firstDate == $secondDate) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
我是编程和PHP的新手,所以任何指针都赞赏.
Eve*_*ert 55
使用对象语法!
$firstDate = $firstDateTimeObj->format('Y-m-d');
$secondDate = $secondDateTimeObj->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)
你的if表达非常接近,但是!运算符必须在括号内.
if (!($firstDate == $secondDate))
Run Code Online (Sandbox Code Playgroud)
这也可以表示为
if ($firstDate != $secondDate)
Run Code Online (Sandbox Code Playgroud)
lon*_*day 13
我的第一个答案是完全错误的,所以我开始一个新的.
如其他答案所示,最简单的方法是date_format
.这几乎可以肯定是要走的路.但是,还有另一种方法可以利用DateTime类的全部功能.使用diff
创建一个DateInterval
实例,然后检查其d
属性:如果是0
,那是同一天.
// procedural
$diff = date_diff($firstDateTimeObj, $secondDateTimeObj);
// object-oriented
$diff = $firstDateTimeObj->diff($secondDateTimeObj);
if ($diff->format('%a') === '0') {
// do stuff
} else {
// do other stuff
}
Run Code Online (Sandbox Code Playgroud)
请注意,对于此实例,这几乎肯定是过度杀伤,但如果您希望将来执行更复杂的操作,这可能是一种有用的技术.
Wes*_*orp 10
我认为你的方法很好,但我会删除它,-
因为它们没有添加任何东西.
$firstDate = date_format($firstDateTimeObj, 'Ymd');
$secondDate = date_format($secondDateTimeObj, 'Ymd');
if ($firstDate != $secondDate) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
这对我很有用。
$date1=DateTime::createFromFormat('Y-m-d H:i:s', '2014-07-31 07:30:00')->format('Y-m-d');
$date2=DateTime::createFromFormat('Y-m-d H:i:s', '2014-08-01 17:30:00')->format('Y-m-d');
if($date1==$date2){
echo "==";
}else{
echo "!=";
}
Run Code Online (Sandbox Code Playgroud)
小智 6
搜索具有相同问题的答案..我找到了对我来说更好的解决方案,然后使用diff或其他方法。
主要问题是忽略对象DateTime的时间部分,仅将其设置为时间,例如12:00:00
$firstDateTimeObj->setTime(12, 0, 0);
$secondDateTimeObj->setTime(12, 0, 0);
// The main problem was checking if different.. but you can use any comparison
if ($firstDateTimeObj != $secondDateTimeObj) {
}
Run Code Online (Sandbox Code Playgroud)
TeC*_*n4K -1
strtotime 将文本日期转换为 Unix 时间戳:http://fr.php.net/manual/en/function.strtotime.php
$first = strtotime(date_format($firstDateTimeObj, 'Y-m-d'));
$second = strtotime(date_format($secondDateTimeObj, 'Y-m-d'));
if ($first != $second) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
并且 :
if ($first > $second) {
// some code
}
if ($first < $second) {
// some code
}
Run Code Online (Sandbox Code Playgroud)