我需要检查date1是今天还是将来的日期,如果是,那就可以了如果不是(是过去的事),那就不好了。我看到了很多例子,但没有一个主题是检查date1今天是否相等。我的代码是:
$today = new DateTime(); // Today
$today->format('Y-m-d'); //2016-10-27
$contractDateBegin = new DateTime($date1); //2016-10-27
if($today->getTimestamp() <= $contractDateBegin->getTimestamp()){
echo 'OK';
}
else{
echo "NOT OK";
}
如果date1是将来的日期,则正常工作,但如果是相同的日期,则回显"NOT OK"
帮忙吗?
$today
可以定义为new DateTime("today")
,这意味着今天午夜-时间部分将自动归零
$today = new DateTime("today");
$date1 = '2016-10-27';
$contractDateBegin = new DateTime($date1); //2016-10-27
if($today <= $contractDateBegin){
echo 'OK';
}
else{
echo "NOT OK";
}
"Y-m-d格式"对于字符串的直接字典顺序比较也是完美的,并且不需要将其转换为DateTime对象。在PHP7中,您可以使用著名的specship操作符;)
php -a
Interactive mode enabled
php > $today = '2016-10-27';
php > $tomorrow = '2016-10-28';
php > $today2 = '2016-10-27';
php > echo $today <=> $tomorrow;
-1
php > echo $today <=> $today2;
0
php > echo $tomorrow <=> $today2;
1
getTimestamp()
包含"H:i:s"。所以比较秒的时候会失败。在您的情况下,您是否只想比较日期('Y-m-d')?如果你只是想使用DateTime和比较Timestamp。请尝试
$today = new DateTime(); // Today
$contractDateBegin = new DateTime($date1); //2016-10-27
// Set time to 0
$today->setTime(0, 0, 0);
$contractDateBegin->setTime(0, 0, 0);
if($today->getTimestamp() <= $contractDateBegin->getTimestamp()){
echo 'OK';
}
else{
echo "NOT OK";
}
我猜你只想比较日期(忽略时间)。这应该可以工作:
$today = new DateTime();
$today = $today->format('Y-m-d');
$contractDateBegin = new DateTime($date1);
$contractDateBegin = $contractDateBegin->format('Y-m-d');
if ($today <= $contractDateBegin){
echo 'OK';
} else {
echo "NOT OK";
}