1

我有以下代码来比较 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 中比较两个日期不是正确的方法吗?

4

6 回答 6

3

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

但是, strtotime() 创建 unix 时间戳(整数),因此您可以并且应该像这样比较它们。

于 2012-05-29T08:48:38.673 回答
3

只需将日期保留为字符串,然后使用strtotimein 进行转换if ()

$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.
于 2012-05-29T08:57:08.307 回答
1

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

于 2012-05-29T08:55:05.343 回答
0
$time1 = strtotime('29-05-2012'); # <--- past
$time2 = strtotime('27-06-2012'); # <--- future

echo max($time1,$time2);
echo "<br />";
echo min($time1,$time2);
于 2012-05-29T09:04:59.097 回答
0

为什么不:

if (mktime(0,0,0,12,31,2012) > mktime(0,0,0,6,25,2011)) {
   echo "12/31/2012 is after 6/25/2011";
}
于 2012-05-29T09:06:24.110 回答
0
$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]));
于 2018-07-26T05:23:00.740 回答