如果日期是格式'03_01_12'和,如何比较PHP中的两个日期'31_12_11'.
我正在使用此代码:
$date1=date('d_m_y');
$date2='31_12_11';
if(strtotime($date1) < strtotime($date2))
echo '1 is small ='.strtotime($date1).','.$date1;
else
echo '2 is small ='.strtotime($date2).','.$date2;
Run Code Online (Sandbox Code Playgroud)
但它没有工作..
Mut*_*nan 133
您的括号并非全部匹配:
if(strtotime($date1) < strtotime($date2)){
//Your logic
}
Run Code Online (Sandbox Code Playgroud)
改为:
if(strtotime($date1) < strtotime($date2)){
//Your logic
}
Run Code Online (Sandbox Code Playgroud)
dku*_*rni 41
您必须确保您的日期是有效日期对象.
试试这个:
$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]));
Run Code Online (Sandbox Code Playgroud)
然后,您可以执行该strtotime()方法以获得差异.
nev*_*ind 35
使用DateTime :: createFromFormat:
$format = "d_m_y";
$date1 = \DateTime::createFromFormat($format, "03_01_12");
$date2 = \DateTime::createFromFormat($format, "31_12_11");
var_dump($date1 > $date2);
Run Code Online (Sandbox Code Playgroud)
date_diff()函数返回两个DateTime对象之间的差异.
如果第一个日期在第二个日期之前,则返回正数天数; 否则为负天数:
<?php
$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");
?>
Run Code Online (Sandbox Code Playgroud)
输出将是"+272天";
更改$ date1 ="2014-03-15"
<?php
$date1=date_create("2014-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");
?>
Run Code Online (Sandbox Code Playgroud)
输出将是"-93天"
<?php
$expiry_date = "2017-12-31 00:00:00"
$today = date('d-m-Y',time());
$exp = date('d-m-Y',strtotime($expiry_date));
$expDate = date_create($exp);
$todayDate = date_create($today);
$diff = date_diff($todayDate, $expDate);
if($diff->format("%R%a")>0){
echo "active";
}else{
echo "inactive";
}
echo "Remaining Days ".$diff->format("%R%a days");
?>
Run Code Online (Sandbox Code Playgroud)
扩展@ nevermind的答案,可以使用DateTime :: createFromFormat: like,
// use - instead of _. replace _ by - if needed.
$format = "d-m-y";
$date1 = DateTime::createFromFormat($format, date('d-m-y'));
$date2 = DateTime::createFromFormat($format, str_replace("_", "-",$date2));
var_dump($date1 > $date2);
Run Code Online (Sandbox Code Playgroud)
你可以尝试这样的事情:
$date1 = date_create('2014-1-23'); // format of yyyy-mm-dd
$date2 = date_create('2014-2-3'); // format of yyyy-mm-dd
$dateDiff = date_diff($date1, $date2);
var_dump($dateDiff);
Run Code Online (Sandbox Code Playgroud)
然后您可以像这样访问天数差异 $dateDiff->d;
不是回答OP的实际问题,而是仅回答标题。因为这是“比较php中的日期”的最佳结果。
使用日期时间对象(php >= 5.3.0)并直接比较它们非常简单
$date1 = new DateTime("2009-10-11");
$date2 = new DateTime("tomorrow"); // Can use date/string just like strtotime.
var_dump($date1 < $date2);
Run Code Online (Sandbox Code Playgroud)