我混淆了两个不同的条件,但给出了相同的结果。
第一种情况
$row_otp_time = '2020-10-20 01:59:31';
$date = new DateTime($row_otp_time);
$date->modify('+5 minute');
$timezone = date_default_timezone_get();
date_default_timezone_set($timezone);
$expired_datetime = $date->format("Y-m-d h:i:s");
$current_date_time = '2020-10-20 02:04:31'; //current date
if($current_date_time > $expired_datetime){
echo 'expired';
}
else{
echo 'not expired';
}
输出
not expired
第二种情况
$row_otp_time = '2020-10-20 01:59:31';
$date = new DateTime($row_otp_time);
$date->modify('+5 minute');
$timezone = date_default_timezone_get();
date_default_timezone_set($timezone);
$expired_datetime = $date->format("Y-m-d h:i:s");
$current_date_time = '2020-10-20 02:04:31'; //current date
if(strtotime($current_date_time) > strtotime($expired_datetime)){
echo 'expired';
}
else{
echo 'not expired';
}
输出
not expired
所以在上面的两个例子中,有一个区别是,在第一种情况下,我将正常日期作为字符串进行了比较,但在第二种情况中,我将日期与strtime函数进行了比较。我知道第二种方法适合检查。
但我想知道为什么第一个案例不合适,或者你能解释一下在哪种类型的案例或某些日期的例子中,第一个案例给出了不合适的结果吗。
此外,这两种类型的案件是否在任何案件的日期时间比较中都会产生问题?
$row_otp_time='2020-10-20 12:52:00';
$date = new DateTime($row_otp_time);
$date->modify('+5 minute');
$timezone = date_default_timezone_get();
date_default_timezone_set($timezone);
$current_date_time = '2020-10-20 01:00:00'; // date('Y-m-d h:i:s')
$expired_datetime = $date->format("Y-m-d h:i:s");
if(strtotime($current_date_time) > strtotime($expired_datetime)){
echo 'exxpired';
}
else{
echo 'not expired';
}
如果您正在获取当前日期-时间,如日期("Y-m-d h:i:s"((注释代码(;h〃;如果上午/下午正在更改,则它将不会正确地给出比较日期字符串