Выборка данных между начальной датой и конечной датой - PullRequest
0 голосов
/ 24 июня 2011
$startMonth = strtotime(2011-02-20);
$endMonth = strtotime(2011-06-05);
while($startMonth <= $endMonth)
{
     echo date('F Y', $startMonth);
     $startMonth = strtotime("+1 month", $startMonth);
}

У меня проблема при получении данных между начальной и конечной датами, используя код выше. Если я запускаю этот код, он просто может получить данные в период с 02 февраля по 05 апреля, а 06 июня опущен. Я просто хочу знать, в чем проблема с моим кодом. Если я приведу даты от 2011-02-01 до 2011-06-01, будет сгенерирован вывод.

проблема как:

  • если я даю: «2011-02-01» - «2011-06-01», это работает

  • , если я дам '2011-02-02' '2011-02-01' , это не сработает

  • если я даю '2011-02-02' '2011-02-03', это работает

Ответы [ 4 ]

0 голосов
/ 24 июня 2011

заменить

$startMonth = strtotime(2011-02-20);
$endMonth = strtotime(2011-06-05);

с

$startMonth = strtotime('2011-02-20');
$endMonth = strtotime('2011-06-05');

Вам необходимо четко указать, что дата является строковым значением, потому что PHP выполняет вычисления и заменяет 2011-02-20 на 1989 (2011 минус 2 минус 20)

--- добавил ---

Хорошо, еще один вариант (надеюсь, я понимаю, что вы хотите увидеть)

<?php
$startMonth = strtotime(date("01-n-Y",strtotime('2011-02-20')));
$endMonth = strtotime(date('01-n-Y',strtotime('2011-06-05')));
  while($startMonth <= $endMonth)
     {
           echo date('F Y', $startMonth);
           $startMonth = strtotime("+1 month", $startMonth);
     }
?>
0 голосов
/ 24 июня 2011
$startMonth = strtotime(2011-02-20);
        $endMonth = strtotime(2011-06-05);
      while($startMonth <= $endMonth)
         {
               echo date('F Y', $startMonth);
               $startMonth = strtotime("+1 month", $startMonth);
         }

У вас есть дополнительные $ там, где они вам не нужны.

$2011-02-20

должно быть

2011-02-20
0 голосов
/ 24 июня 2011

Если мы считаем это опечаткой $ 2011-06-20 , тогда

$ startMonth + 4 month = 2011-06-20

2011-06-20 > 2011-06-05

so echo не распечатано июнь 2011

0 голосов
/ 24 июня 2011

Вы должны удалить знак $ в $ 2011. С 2011 по 2011 год Это решило бы вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...