php - 如何从给定的两个日期检查日值?

时间:2014-06-12 12:06:09

标签: php date datetime strtotime

我不知道此问题是否已经提出过。

其实我有两个约会:

$date1 = $DATABASE_VALUE;

$day1 = date('d', strtotime($date1)); // $date1 is my database value

$date2 = date('Y-m-d H:m:s');

$day2 = date('d', strtotime($date2)); // $date2 current date

我需要检查一下:

if($day1 <= $day2) {
   ...
}

如果$date1有一个日期值(比如 - 2014-06-12 10:20:50)并且我设置了一个默认值

,它就有效
0000-00-00 00:00:00

所以$date1不是0000-00-00 00:00:00(可能是2014-06-12 10:20:50)那么:

$date1 = "2014-06-12 10:20:50"; // database value

$day1 = date('d', strtotime($date1)); 

echo $day1; // returns 12 (which is correct)

但如果$date10000-00-00 00:00:00,那么

$day1 returns 01

WHY吗

如果它的行为是strtotime()(不确定)。

然后告诉我如果日期到来0000-00-00 00:00:00我该怎么办?

请帮助..

4 个答案:

答案 0 :(得分:1)

您可以查看某些条件,如下所示:

$date1 = $DATABASE_VALUE;

if('0000-00-00 00:00:00' != $date1) {
    $day1 = date('d', strtotime($date1)); // $date1 is my database value
} else {
    $day1 = 0;
}

$date2 = date('Y-m-d H:m:s');

$day2 = date('d', strtotime($date2)); // $date2 current date

更新:

if(!empty(strtotime($date1))) {
    $day1 = date('d', strtotime($date1)); // $date1 is my database value
} else {
    $day1 = 0;
}

答案 1 :(得分:1)

您必须在if语句中添加额外条件,以检查$date1的时间戳是否与0false)不同。 不知怎的,这样:

$date1 = $DATABASE_VALUE;
$day1 = date('d', $t1 = strtotime($date1)); // $date1 is my database value
$date2 = date('Y-m-d H:m:s');
$day2 = date('d', strtotime($date2)); // $date2 current date

if($t1 && $day1 <= $day2) {
    ...
}

答案 2 :(得分:0)

转换后只需比较时间:

$time1 = strtotime($date1);
if($time1 < time()) {
    //@TODO
}

答案 3 :(得分:0)

数据库可以轻松返回您在当天存储的日期。我不知道你使用Mysql的数据库,你可以使用date_format:

select date_format(now(), '%d') as DAY; -> 12

这在PHP中是一个简单的整数比较。