Как сравнить одну дату с несколькими датами в PHP

#php #jquery #mysql #datepicker

#php #jquery #mysql #datepicker

Вопрос:

Как мне сравнить две даты в php ?.
У меня есть следующие даты. Один поступает из DB. а другой — из Datepicker

 $dbdate = 01-06-201402-06-201403-04-201405-06-2014 //DB date 
$datepickerDate = 06-06-2014 //Datepicker date.
  

Здесь $dbdate находится в цикле foreach, и оба формата являются дд-мм-гггг. Как мне сравнить одну дату из datepicker с датой в $dbdate ?

Комментарии:

1. Итак, $dbdate это конкатенация дат?

2. сравнить в цикле или $dbdate — это одна строка, которая содержит несколько дат?

3. Недостаточно информации. Покажите, что вы пробовали до сих пор?

4. да, в $dbdate есть конкатенация дат…

Ответ №1:

Сравните с функцией STRTOTIME в цикле for следующим образом

 return STRTOTIME($dbdate) === STRTOTIME($datepickerDate);
  

Комментарии:

1. Или вы могли бы просто сделать return STRTOTIME($dbdate) === STRTOTIME($datepickerDate); .

2. @Jerodev Спасибо за предложение

Ответ №2:

лучше всего преобразовать все в метку времени unix .. метод php — strtotime(), затем он возвращает целочисленное значение … вы можете сравнить эти значения

http://www.php.net//manual/en/function.strtotime.php

но дело в том, что ур dbdate анализирует более 1 даты за раз .. вы должны получать 1 дату за раз

Ответ №3:

Это не идеальное решение, но я надеюсь, что оно вам поможет ;-).

 <?php
// Input
$dbdate = '01-06-201402-06-201403-04-201405-06-2014';
$datepickerDate = '06-06-2014';

// Please note: it would be possible to check dates directly in this for loop.
// For educational purposes I splitted it.

$datepickerDateTime = strtotime($datepickerDate);

// Transform concatenated dates to separate dates in array.
$datesList = array();
$dateOffset = 10;
for($iCurrentDateOffset = 0; $iCurrentDateOffset < strlen($dbdate); $iCurrentDateOffset  = $dateOffset) {
    $datesList[] = substr($dbdate, $iCurrentDateOffset, $dateOffset);
}

// Compare each separate date to $datepickerDate
foreach($datesList as $date) {
    if(strtotime($date) < $datepickerDateTime) {
        echo("$date is before $datepickerDate<br />");
    } else if(strtotime($date) == $datepickerDateTime) {
        echo("$date is equal to $datepickerDate<br />");
    } else if(strtotime($date) > $datepickerDateTime) {
        echo("$date is past $datepickerDate<br />");
    }
}

// ...
  

Вывод:

  • 01-06-2014 предшествует 06-06-2014
  • 02-06-2014 предшествует 06-06-2014
  • 03-04-2014 предшествует 06-06-2014
  • 05-06-2014 предшествует 06-06-2014