Показывает ли функция php Date mktime() другое значение в конце месяца?

Чтобы перечислить месяцы в раскрывающемся списке, используется функция php.

<select name="month" class="span3">
        <?php
            for($m = 1;$m <= 12; $m++){ 
                $month =  date("F", mktime(0, 0, 0, $m));?>
                <option  value="<?php echo $m; ?>"><?php echo $month; ?></option> 
        <?php } ?>
    </select>

Он работал нормально, когда я проверяю сегодня (т.е. 31-07-2013), его месяц отображается как

    <select class="span3" name="month">
       <option value="1">January</option>
       <option value="2">March</option>
       <option value="3">March</option>
       <option value="4">May</option>
       <option value="5">May</option>
       <option value="6">July</option>
       <option value="7">July</option>
       <option value="8">August</option>
       <option value="9">October</option>
       <option value="10">October</option>
       <option value="11">December</option>
       <option value="12">December</option>
    </select>

когда я проверяю формат даты как ('Y-m-d'), он показывает первую и последнюю дату этого месяца и не показывает февраль, поскольку февраль показывает 2013-03-03. Когда я изменяю функцию mktime как mktime(0, 0, 0, $m,1,2013), результаты приходят так, как и ожидалось. Есть ли что-то, что мне нужно искать, когда я использую функцию mktime() или date() в php.


person Sathya Raj    schedule 31.07.2013    source источник


Ответы (2)


Добавьте 5-й параметр, чтобы исправить это.

$month =  date("F", mktime(0, 0, 0, $m, 1));

Это 31-е число, и только в вышеуказанных месяцах 31 день.

чтобы уточнить, что происходит, значением по умолчанию для 5-го параметра является текущий день. вы передаете число больше, чем количество дней в этом месяце, оно переносится на следующий месяц.

person Moylin    schedule 31.07.2013

Вы должны передать 5-й параметр day в функцию mktime.

 for($m = 1; $m <= 12; $m++){ 
      $month =  date("F", mktime(0, 0, 0, $m, 1));
      echo $month;
 } 

День меньше 1 (включая отрицательные значения) относится к дням в предыдущем месяце.

person som    schedule 31.07.2013