PHP에서 두 날짜를 비교하는 방법
날짜 형식으로되어 있는지 어떻게 PHP에서 두 날짜를 비교 '03_01_12'
하고 '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;
하지만 작동하지 않습니다 ..
날짜가 유효한 날짜 개체인지 확인해야합니다.
이 시도:
$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]));
그런 다음 strtotime()
방법을 수행 하여 차이를 얻을 수 있습니다 .
대괄호가 모두 일치하지 않습니다.
if(strtotime($date1) < strtotime($date2)){
//Your logic
}
이것으로 변경 :
if(strtotime($date1) < strtotime($date2)){
//Your logic
}
사용 날짜 시간 :: createFromFormat를 :
$format = "d_m_y";
$date1 = \DateTime::createFromFormat($format, "03_01_12");
$date2 = \DateTime::createFromFormat($format, "31_12_11");
var_dump($date1 > $date2);
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");
?>
출력은 "+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");
?>
출력은 "-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");
?>
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);
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 (php >= 5.3.0
) and Compare them directly
$date1 = new DateTime("2009-10-11");
$date2 = new DateTime("tomorrow"); // Can use date/string just like strtotime.
var_dump($date1 < $date2);
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;
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;
}
}
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";
compare the result of maketime()
for each of the time
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);
}
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';
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;
}
}
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
If both dates are in the same format then use a comparison operator.
$date1 = "2018-05-05";
$date2 = "2019-08-19";
//comparison operator to
if ($date1 > $date2) {
echo "$date1 is latest than $date2";
}
else{
echo "$date1 is older than $date2";
}
Output: 2018-05-05 is older than 2019-08-19
참고URL : https://stackoverflow.com/questions/8722806/how-to-compare-two-dates-in-php
'development' 카테고리의 다른 글
가장 정확한 결과를 얻으려면 어떤 순서로 수레를 추가해야합니까? (0) | 2020.08.13 |
---|---|
URL의 하위 도메인을 가져 오는 PHP 함수 (0) | 2020.08.13 |
서로를 참조하는 두 목록을 똑같은 방식으로 정렬 할 수 있습니까? (0) | 2020.08.13 |
curl -v의 출력을 어떻게 파이프하거나 리디렉션합니까? (0) | 2020.08.13 |
프로그래밍에서 "to stub"은 무엇을 의미합니까? (0) | 2020.08.13 |