PHP - 将数据库DateTime与当前DateTime进行比较

时间:2017-07-15 21:34:39

标签: php database datetime mysqli

我在StackOverflow上看到过几个不同的DateTime比较,但我似乎无法做到正确。我需要能够从数据库中检索一行,比较DateTime和当前的DateTime,然后评估它是否。

在这种情况下,我需要检查当前行是否已过期。

if (strtotime(new DateTime()) > strtotime($row['expiration_date'])) {
  $response = 'Valid Coupon!';
} else {
  $response = 'Coupon Expired';
}

我尝试过几种不同的方法,但似乎都没有正常工作。

"2017-07-15 13:42:31 > 2017-07-15 14:27:31"
// and 
"2017-07-15 13:42:31 > 2017-07-14 13:03:04"

两者都作为有效优惠券返回。

我已经尝试了很多东西,但似乎无法弄清楚为什么这些日期不能正常工作。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

使用->format

 if (strtotime((new DateTime())->format("Y-m-d H:i:s")) > strtotime($row['expiration_date'])) {
   $response = 'Valid Coupon!';
 } else {
    $response = 'Coupon Expired';
 }

现场直播:https://eval.in/833030

或者您可以使用

   (new DateTime())->getTimestamp();

而不是

   strtotime((new DateTime())->format("Y-m-d H:i:s"));

请检查:https://eval.in/833038

答案 1 :(得分:2)

您应该将您的new DateTime()和外派日期和时间更改为Unix时间戳。 将日期转换为Unix时间戳时,它将以数字格式显示。这样,您将比较您的价值。

例如:

$current_date = strtotime(new DateTime); //your current date and time 
$expatriation_date = strtotime($row['expiration_date']);  //your database data and time values // 
if($current_date > expatriation_date ){
    $response = 'Valid Coupon!';              
}
else{
    $response = 'Coupon Expired';
}

您在Unix时间戳中的当前日期和时间是“1500118951”,在Unix时间戳中的外派日期和时间是“1500121651”。您可以轻松比较您的价值。