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