这是在 PHP 中比较两个日期的正确方法


Which is correct method to compare two dates in PHP?

我有以下代码来比较PHP中的两个日期,哪一个是合适的方法

<?php 
$var = date('d-m-Y',strtotime('29-05-2012'));
$var1 = date('d-m-Y',strtotime('27-06-2012'));
echo $var;    //29-05-2012
echo $var1;   //27-06-2012
if($var1 >= $var) //method 1
 {
  echo 'var1 is future date';
 }
 if(strtotime($var1) >= strtotime($var)) //method 2
 {
 echo 'var1 is future date(second if)';
 }
 ?>

在以上两种方法中,method-1不起作用,在PHP中比较两个日期不是正确的方法吗?

不,第一种方法不正确,因为$var1$var是字符串,所以你不能这样比较它们。

但是,strtotime() 创建了 unix 时间戳(整数),所以你可以而且应该像这样比较它们。

只需将日期保留为字符串,并在 if () 中使用 strtotime 进行转换。

$a = '29-5-2012';
$b = '27-6-2012';
if (strtotime($a) >= strtotime($b)) {
    echo "$a is future date.";
} else {
    echo "$b is future date.";
}
// 27-6-2012 is future date.

根据你的 php 版本>= 5.3,你可以试试 date_diff()

$time1 = strtotime('29-05-2012'); # <--- past
$time2 = strtotime('27-06-2012'); # <--- future
echo max($time1,$time2);
echo "<br />";
echo min($time1,$time2);

为什么不呢:

if (mktime(0,0,0,12,31,2012) > mktime(0,0,0,6,25,2011)) {
   echo "12/31/2012 is after 6/25/2011";
}
$date1=date('d/m/y');
$tempArr=explode('_', '31_12_11');
$date2 = date("d/m/y", mktime(0, 0, 0, $tempArr[1], $tempArr[0], $tempArr[2]));