将两个日期比较为字符串格式(Y-m-d h:i:s)和php中两个日期的strtotime之间有什么区别



我混淆了两个不同的条件,但给出了相同的结果。

第一种情况

$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〃;如果上午/下午正在更改,则它将不会正确地给出比较日期字符串

相关内容

  • 没有找到相关文章

最新更新