PHP에서 두 날짜를 비교하려면 어떻게 해야 하나요?
PHP에서 두 날짜를 비교하려면 어떻게 해야 하나요?
날짜는 다음 형식으로 데이터베이스에 저장됩니다.
2011-10-2
오늘 날짜를 데이터베이스에 있는 날짜와 비교하여 어떤 날짜가 더 큰지 확인하려면 어떻게 해야 합니까?
이거 해봤는데
$today = date("Y-m-d");
$expire = $row->expireDate //from db
if($today < $expireDate) { //do something; }
그런 식으로 되지는 않아요.또 다른 방법이 있을까요?
모든 날짜가 1970년 1월 1일 이후라면 다음과 같은 것을 사용할 수 있습니다.
$today = date("Y-m-d");
$expire = $row->expireDate; //from database
$today_time = strtotime($today);
$expire_time = strtotime($expire);
if ($expire_time < $today_time) { /* do Something */ }
PHP 5 > = 5.2.0을 사용하는 경우 DateTime 클래스를 사용할 수 있습니다.
$today_dt = new DateTime($today);
$expire_dt = new DateTime($expire);
if ($expire_dt < $today_dt) { /* Do something */ }
아니면 이런 식으로요
데이터베이스에서 날짜는 2011년 10월 2일과 같습니다.
YYY-MM-DD에 저장하면 '1' > '0' 등의 이유로 문자열 비교가 실행됩니다.
이미 제시된 답변을 보완하기 위해 다음 예를 참조하십시오.
$today = new DateTime('');
$expireDate = new DateTime($row->expireDate); //from database
if($today->format("Y-m-d") < $expireDate->format("Y-m-d")) {
//do something;
}
if(date('Y-m-d') < date('Y-m-d', strtotime($expire_date))){
//echo not yet expired!
}
나는 PHP로 이것을 하지 않을 것이다.데이터베이스에서는 오늘이 무슨 요일인지 알고 있어야 합니다.(예를 들어 MySQL->NOW() 사용).따라서 Query 내에서 비교하고 결과를 반환하는 것은 매우 간단합니다.사용하는 Date-Type에 따라서는 문제 없습니다.
SELECT IF(expireDate < NOW(),TRUE,FALSE) as isExpired FROM tableName
$today = date('Y-m-d');//Y-m-d H:i:s
$expireDate = new DateTime($row->expireDate);// From db
$date1=date_create($today);
$date2=date_create($expireDate->format('Y-m-d'));
$diff=date_diff($date1,$date2);
//echo $timeDiff;
if($diff->days >= 30){
echo "Expired.";
}else{
echo "Not expired.";
}
여기 두 날짜의 차이를 분 단위로 구하는 방법이 있습니다.
// set dates
$date_compare1= date("d-m-Y h:i:s a", strtotime($date1));
// date now
$date_compare2= date("d-m-Y h:i:s a", strtotime($date2));
// calculate the difference
$difference = strtotime($date_compare1) - strtotime($date_compare2);
$difference_in_minutes = $difference / 60;
echo $difference_in_minutes;
날짜를 UNIX 타임스탬프로 변환하고 그 차이를 초단위로 비교할 수 있습니다.
$today_date=date("Y-m-d");
$entered_date=$_POST['date'];
$dateTimestamp1 = strtotime($today_date);
$dateTimestamp2 = strtotime($entered_date);
$diff= $dateTimestamp1-$dateTimestamp2;
//echo $diff;
if ($diff<=0)
{
echo "Enter a valid date";
}
나도 그 문제가 있었고, 나는 그것을 다음과 같이 해결했다.
$today = date("Ymd");
$expire = str_replace('-', '', $row->expireDate); //from db
if(($today - $expire) > $NUMBER_OF_DAYS)
{
//do something;
}
여기 PHP를 사용한 두 날짜의 차이를 얻는 방법에 대한 저의 의견이 있습니다.시간 없이 DateTime createFromFormat에서 정보를 얻었기 때문에 날짜의 시간 부분을 폐기하려면 형식에서 '!'을 사용하십시오.
$today = DateTime::createFromFormat('!Y-m-d', date('Y-m-d'));
$wanted = DateTime::createFromFormat('!d-m-Y', $row["WANTED_DELIVERY_DATE"]);
$diff = $today->diff($wanted);
$days = $diff->days;
if (($diff->invert) != 0) $days = -1 * $days;
$overdue = (($days < 0) ? true : false);
print "<!-- (".(($days > 0) ? '+' : '').($days).") -->\n";
암호 재설정을 수행할 때 토큰 만료 날짜 등 일정 기간 동안 날짜($date)가 만료되도록 하려면 다음과 같이 하십시오.
$date = $row->expireDate;
$date->add(new DateInterval('PT24H')); // adds 24 hours
$now = new \DateTime();
if($now < $date) { /* expired after 24 hours */ }
그러나 이 경우 다음과 같이 비교할 수 있습니다.
$today = new DateTime('Y-m-d');
$date = $row->expireDate;
if($today < $date) { /* do something */ }
블로그에서 답을 찾았는데 다음과 같이 간단합니다.
strtotime(date("Y"."-01-01")) -strtotime($newdate))/86400
그리고 당신은 두 날짜 사이에 날짜를 얻을 수 있을 것입니다.
이는 PHP의 문자열 비교 로직 때문에 작동합니다.간단히 확인할 수 있습니다.
if ($startdate < $date) {// do something}
if ($startdate > $date) {// do something}
두 날짜는 동일한 형식이어야 합니다.숫자는 왼쪽으로 0으로 패딩하여 최상위부터 최하위 순서로 정렬해야 합니다. Y-m-d
★★★★★★★★★★★★★★★★★」Y-m-d H:i:s
이러한 조건을 만족시키다.
먼저 서버의 현재 날짜 시간에 원하는 형식을 지정하십시오.
현재 날짜 시간 가져오기
$current_date = getdate();
원하는 대로 날짜와 시간을 구분하여 관리할 수 있습니다.
$current_date_only = $current_date[year].'-'$current_date[mon].'-'$current_date[mday]; $current_time_only = $current_date['hours'.':'.$current_date['minutes'].':'$current_date['seconds'];
DB에서 donly date 또는 datetime 중 어느 쪽을 사용하는지에 따라 비교:
$today = $current_date_only.' '.$current_time_only;
또는
$today = $current_date_only;
if($today < $expireDate)
도움이 되었으면 좋겠다
언급URL : https://stackoverflow.com/questions/3847736/how-can-i-compare-two-dates-in-php
'IT' 카테고리의 다른 글
LEFT JOIN의 LIMIT 사용방법 (0) | 2023.01.15 |
---|---|
개체를 포함하는 두 어레이를 병합하고 중복된 값을 제거합니다. (0) | 2023.01.12 |
Mariadb 스레드에 '다음 명령에 대해 재설정' 상태가 고착됨 (0) | 2023.01.12 |
목록의 파일을 재귀 하위 폴더 검색 및 반환하려면 어떻게 해야 합니까? (0) | 2023.01.12 |
식 앞에 칠데는 무엇을 합니까? (0) | 2023.01.12 |