2015-01-17 5 views
-1

Я создаю приложение на php, mysql, которое связано с событиями. Это конкретная функция, в которой пользователь будет повторять действие/событие. Пользователь выберет дату начала и дату окончания. Теперь я пытаюсь выяснить, как рассчитать даты между этими двумя выбранными датами. Я использую datepicker jquery для выбора даты.Выбрать все даты между двумя выбранными датами

 $start_date = date("Y-m-d", strtotime($_POST['start_date'])); 
    $end_date = date("Y-m-d", strtotime($_POST['end_date'])); 

Datediff, похоже, не выполняет работу, так как он дает только разницу между двумя датами. Мне нужны все даты между этими двумя датами.

Было бы здорово, если бы кто-нибудь мог советовать, как это сделать.

+0

Что вы хотите делать с этими датами? –

+0

В отличие от сайтов на форуме, мы не используем «Спасибо», «Любая помощь оценена» или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be –

ответ

0

Этим способом Вы можете получить даты между двумя датами

$start_date = strtotime($_POST['start_date']); 
    $end_date = strtotime($_POST['end_date']); 

    // Loop between timestamps, 24 hours at a time 
    for ($i = $start_date ; $i <= $end_date ; $i = $i + 86400) { 
       echo date('Y-m-d', $i)."<br>";   

    } 
+0

Это выход ---> 1970-01-01 На выбранные даты между: 2015-01-29 ---> 2015-03-29 – user1411837

+0

Проверьте правильность .. . Он возвращает все даты между 29-м jan и 29-м маршем –

+0

Просто скопируйте и вставьте мой код в php и попробуйте –

-1

Я бы порекомендовал вам использовать DateTime объекты

date_default_timezone_set("Europe/Istanbul"); 
$dt = new DateTime("10-01-2014"); 
$diff = $dt->diff(new Datetime("12-01-2014")); 
for($i = 1; $i <= $diff->days; $i++) { 
    $nextdate = $dt->modify("+1 day"); 
    echo $nextdate->format("d-m-Y"); echo "\n"; 
} 
+0

Пробовали ли вы себя перед отправкой здесь? –

+0

Это не работает вообще ... $ dt = new DateTime ($ _ POST ['start_date']) и $ diff = $ dt-> diff ($ _ POST ['end_date']), не имеют смысла, поскольку они вызывают пустые выходы ... – user1411837

+0

Это пример кода, пожалуйста, прочитайте DateTime [документация] (http://php.net/manual/en/class.datetime.php) Я не знаю, что содержит поле start_date, поэтому вам может понадобиться немного изменить этот примерный код –

-1
function createDateRangeArray($strDateFrom,$strDateTo) 
    {  
     $aryRange=array(); 

     $iDateFrom=mktime(1,0,0,substr($strDateFrom,5,2),  substr($strDateFrom,8,2),substr($strDateFrom,0,4)); 
     $iDateTo=mktime(1,0,0,substr($strDateTo,5,2),  substr($strDateTo,8,2),substr($strDateTo,0,4)); 

     if ($iDateTo>=$iDateFrom) 
     { 
      array_push($aryRange,date('Y-m-d',$iDateFrom)); // first entry 
      while ($iDateFrom<$iDateTo) 
      { 
       $iDateFrom+=86400; // add 24 hours 
       array_push($aryRange,date('Y-m-d',$iDateFrom)); 
      } 
     } 
     return $aryRange; 
    } 

Найдено вышеуказанное решение и он прекрасно работает. Спасибо всем за время и совет.

+0

Я действительно рекомендую вам создать свою собственную функциональную базу в своем комментарии. Я отредактировал код, который вы сейчас поймете, как он работает. http://stackoverflow.com/questions/28000840/php-mysql-select-all-the-dates-between-two-chosen-dates/28000930#28000930 –

Смежные вопросы