我在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"
两者都作为有效优惠券返回。
我已经尝试了很多东西,但似乎无法弄清楚为什么这些日期不能正常工作。有什么想法吗?
答案 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';
}
或者您可以使用
(new DateTime())->getTimestamp();
而不是
strtotime((new DateTime())->format("Y-m-d H:i:s"));
答案 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”。您可以轻松比较您的价值。