我想比较两个日期时间的间隔,看看时间间隔是过去,将来还是现在。
$current_time = new DateTime();
$datetime1 = new DateTime('2018-03-17 18:25:00');
$datetime2 = new DateTime('2018-03-17 20:00:00');
if($current_time >= $datetime1 && $current_time <= $datetime2){
// now
} elseif($current_time >= $datetime1){
// past
} elseif($current_time <= $datetime1){
// future
}
编辑: 对不起,刚刚意识到发布我的整个真实代码会让每个人都更容易。
上面的示例确实有效,但是当我使用多个间隔从那里循环数据时它不起作用
function interval(){
....
while($row = $result->fetch_assoc()){
$start_time = $row['start_time'];
$end_time = $row['end_time'];
$now = new DateTime();
$datetime1 = new DateTime($start_time);
$datetime2 = new DateTime($end_time);
if($now >= $datetime1 && $now <= $datetime2){
// now
}elseif($now < $datetime1 && $now < $datetime2){
// past
}elseif($now > $datetime1 && $now > $datetime2){
// future
}else{
// fail?
}
}
}
答案 0 :(得分:0)
date
返回一个字符串。如果您确实想要使用真正的DateTime
对象,那么您需要执行以下操作:
$now = new DateTime();
$other = new DateTime('2018-03-18 17:45:00'); //note: example made off the top of my head... value presented may not work
if ($now < $other) {
//do something
}
可以在PHP手册中找到更多信息:https://secure.php.net/manual/en/class.datetime.php
答案 1 :(得分:0)
由于你的日期已经是字符串,只需将它们比作那样
$current_time = date("Y-m-d H:i:s");
$datetime1 = '2018-03-17 18:25:00';
$datetime2 = '2018-03-17 20:00:00';
if($current_time >= $datetime1 && $current_time <= $datetime2){
// now
} elseif($current_time >= $datetime1){
// past
} elseif($current_time <= $datetime1){
// future
}
答案 2 :(得分:0)
您能否扩展代码无法正常运行的原因? 以下是我将如何处理这个问题。
date_default_timezone_set('UTC');
$current_time = new DateTime();
$compareWith = new DateTime('2018-03-16 18:25:00');
if ($current_time >= $compareWith) {
//whatever your heart desires
}
else{
//whatever your heart desires
}