#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