Как сравнить две даты в PHP?
В базе данных дата выглядит как 2011-10-2.
Если бы я хотел сравнить сегодняшнюю дату с датой в базе данных, чтобы узнать, какая из них больше, как мне это сделать?
Я попробовал это,
$today = date("Ymd"); $expire = $row->expireDate //from db if($today < $expireDate) { //do something; }
но на самом деле это не так. Какой еще способ сделать это?
Обновление: я знаю, что это сообщение было довольно старым, но я просто хотел упомянуть углерод, который является классом, который используется с laravel, но может использоваться с классическим php, и он делает чудеса с датами. проверьте это: Углерод
в базе данных дата выглядит так: 2011-10-2
Сохраните его в ГГГГ-ММ-ДД, и тогда сравнение строк будет работать, потому что «1»> «0» и т. Д.
Если все ваши даты выходят с 1 января 1970 года, вы можете использовать что-то вроде:
$today = date("Ymd"); $expire = $row->expireDate //from db $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 */ }
Или что-то в этом роде.
Чтобы комплимент уже предоставленных ответов, см. Следующий пример:
$today = new DateTime(''); $expireDate = new DateTime( $row->expireDate) //from db if($today->format("Ymd") < $expireDate->format("Ymd")) { //do something; }
Обновление: или просто использовать функцию date () старой школы:
if(date('Ym-d') < date('Ym-d', strtotime($expire_date)) ){ //echo not yet expired! }
Я бы не сделал этого с PHP. База данных должна знать, какой день сегодня (используйте MySQL-> NOW (), например), поэтому будет очень легко сравнивать в запросе и возвращать результат без каких-либо проблем в зависимости от используемых типов даты
SELECT IF(expireDate < NOW(),TRUE,FALSE) as isExpired FROM tableName
$today_date=date("Ymd"); $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('Ym-d');//Ymd H:i:s $expireDate = new DateTime($row->expireDate);// From db $date1=date_create($today); $date2=date_create($expireDate->format('Ym-d')); $diff=date_diff($date1,$date2); $timeDiff = $diff->format("%R%a days"); echo $timeDiff; if($timeDiff < 0){ echo "Expired."; }else{ echo "Not expired."; }
Это может помочь, если вы планируете использовать DateTimes.
Вы можете использовать простой PHP для сравнения дат:
$date = new simpleDate(); echo $date->now()->compare($expire_date)->isBeforeOrEqual();
Это даст вам правду или ложь.
Вы можете проверить учебники для получения дополнительных примеров. Пожалуйста, нажмите здесь .
У меня тоже была эта проблема, и я решаю ее:
$today = date("Ymd"); $expire = str_replace('-', '', $row->expireDate); //from db if(($today - $expire) > $NUMBER_OF_DAYS) { //do something; }
Нашел ответ на блог VipDomaine, и он прост как:
strtotime(date("Y"."-01-01")) -strtotime($newdate))/86400
И вы получите дни между двумя датами.
Просто вы можете проверить ..
if ($startdate < $date) {// do something} if ($startdate > $date) {// do something}
но обе даты должны быть в одном формате
Ymd или dmY
и т.п.
while ($row=mysql_fetch_array($result)) { $orderdate=explode('-',$row['alertdate']); $date=$orderdate[0]; $month=$orderdate[1]; $year=$orderdate[2]; if((date(Y)>=$year) and (date(m)>=$month) and (date(d)>=$date)) { //write your true code } else { //write your false code }
вwhile ($row=mysql_fetch_array($result)) { $orderdate=explode('-',$row['alertdate']); $date=$orderdate[0]; $month=$orderdate[1]; $year=$orderdate[2]; if((date(Y)>=$year) and (date(m)>=$month) and (date(d)>=$date)) { //write your true code } else { //write your false code }
Вот как можно получить разницу между двумя датами в минутах.
// set dates $date_compare1= date("dmY h:i:sa", strtotime($date1)); // date now $date_compare2= date("dmY h:i:sa", strtotime($date2)); // calculate the difference $difference = strtotime($date_compare1) - strtotime($date_compare2); $difference_in_minutes = $difference / 60; echo $difference_in_minutes;