Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 在PHP中比较两个日期的正确方法是什么?_Date_Php - Fatal编程技术网

Date 在PHP中比较两个日期的正确方法是什么?

Date 在PHP中比较两个日期的正确方法是什么?,date,php,Date,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'

我有以下代码来比较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)';
 }
 ?>


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

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


但是,strotime()会创建unix时间戳(整数),因此您可以也应该这样比较它们。

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


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

根据您的php版本>=5.3您可以尝试根据您的php版本>=5.3您可以尝试只需将日期保留为字符串,并在
if()
中使用
strotime
进行转换


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

$time1=strotime('29-05-2012');#<代码>$time1=STROTIME('29-05-2012');# 为什么不:

if (mktime(0,0,0,12,31,2012) > mktime(0,0,0,6,25,2011)) {
   echo "12/31/2012 is after 6/25/2011";
}
为什么不:

if (mktime(0,0,0,12,31,2012) > mktime(0,0,0,6,25,2011)) {
   echo "12/31/2012 is after 6/25/2011";
}

忘记你想要比较日期,所以这可能不是你想要的。忘记你想要比较日期,所以这可能不是你想要的。你是否尝试过用Y-m-d格式比较日期,而不是你尝试过用Y-m-d格式比较日期,但在某些情况下,方法1工作正常,我可以知道原因吗?那是因为当使用
=
进行比较时,它会被转换成整数,所以类似于
29052012
27062012
。然而,在这种情况下,问题是第一个整数更大,而第二个日期更晚。但在某些情况下,方法1工作正常,请问原因是什么?这是因为当使用
=
进行比较时,它会转换为整数,因此类似于
29052012
27062012
。然而,在这种情况下,问题是第一个整数更大,而第二个日期更晚。
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]));