可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
How to compare two dates in php if dates are in format \'03_01_12\'
and \'31_12_11\'
.
I am using this code:
$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;
But its not working..
回答1:
You will have to make sure that your dates are valid date objects.
Try this:
$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]));
You can then perform the strtotime()
method to get the difference.
回答2:
Your brackets are not all matched:
if(strtotime($date1))<strtotime($date2)))
Change to this:
if(strtotime($date1) < strtotime($date2))
回答3:
Using DateTime::createFromFormat:
$format = \"d_m_y\";
$date1 = \\DateTime::createFromFormat($format, \"03_01_12\");
$date2 = \\DateTime::createFromFormat($format, \"31_12_11\");
var_dump($date1 > $date2);
回答4:
The date_diff() function returns the difference between two DateTime objects.
If the first date is before the second date a positive number of days will be returned; otherwise a negative number of days:
<?php
$date1=date_create(\"2013-03-15\");
$date2=date_create(\"2013-12-12\");
$diff=date_diff($date1,$date2);
echo $diff->format(\"%R%a days\");
?>
output will be \"+272 days\" ;
changing
$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\");
?>
Output will be \"-93 days\"
回答5:
Extending @nevermind\'s answer, one can use 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);
回答6:
<?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\");
?>
回答7:
you can try something like:
$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);
You can then access the difference in days like this $dateDiff->d;
回答8:
Don\'t know what you\'re problem is but:
function date_compare($d1, $d2)
{
$d1 = explode(\'_\', $d1);
$d2 = explode(\'_\', $d2);
$d1 = array_reverse($d1);
$d2 = array_reverse($d2);
if (strtotime(implode(\'-\', $d1)) > strtotime(implode(\'-\', $d2)))
{
return $d2;
}
else
{
return $d1;
}
}
回答9:
Try this
$data1 = strtotime(\\date(\"d/m/Y\"));
$data1 = date_create($data1);
$data2 = date_create(\"21/06/2017\");
if($data1 < $data2){
return \"The most current date is date1\";
}
return \"The most current date is date2\";
回答10:
compare the result of maketime()
for each of the time
回答11:
I know this is late, but for future reference, put the date format into a recognised format by using str_replace then your function will work. (replace the underscore with a dash)
//change the format to dashes instead of underscores, then get the timestamp
$date1 = strtotime(str_replace(\"_\", \"-\",$date1));
$date2 = strtotime(str_replace(\"_\", \"-\",$date2));
//compare the dates
if($date1 < $date2){
//convert the date back to underscore format if needed when printing it out.
echo \'1 is small=\'.$date1.\',\'.date(\'d_m_y\',$date1);
}else{
echo \'2 is small=\'.$date2.\',\'.date(\'d_m_y\',$date2);
}
回答12:
You can to converte for integer number and compare.
Eg.:
$date_1 = date(\'Ymd\');
$date_2 = \'31_12_2011\';
$date_2 = (int) implode(array_reverse(explode(\"_\", $date_2)));
echo ($date_1 < $date_2) ? \'$date_2 is bigger then $date_1\' : \'$date_2 is smaller than $date_1\';
回答13:
Not answering the OPs actual problem, but answering just the title. Since this is the top result for \"comparing dates in php\".
Pretty simple to use Datetime Objects (v>= 5.3.0
) and Compare them directly
$date1 = new DateTime(\"now\");
$date2 = new DateTime(\"tomorrow\");
var_dump($date1 < $date2);
Note: Datetime object can also be created for a predefined date as below.
$date1 = new DateTime(\'2009-10-11\');
回答14:
I think this one is very simple function
function terminateOrNotStringtoDate($currentDate, $terminationdate)
{
$crtDate = new DateTime($currentDate);
$termDate = new DateTime($terminationdate);
if($crtDate >= $termDate)
{
return true;
} else {
return false;
}
}
回答15:
Guys Please don\'t make it so complex The simple answer bellow
$date1=date(\'d_m_y\');
$date2=\'31_12_11\';
$date1=str_replace(\'_\', \'-\', $date1);
$date2=str_replace(\'_\', \'-\', $date2)
if(strtotime($date1) < strtotime($date2))
echo \'1 is small =\'.strtotime($date1).\',\'.$date1;
else
echo \'2 is small =\'.strtotime($date2).\',\'.$date2;
I just have added two more lines with your code