1

使用 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>

当我今天(即 2013 年 7 月 31 日)检查它的显示月份时,它工作正常

    <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')它显示该月的第一个和最后一个日期并且不显示 2 月它显示的 2 月时2013-03-03。当我修改 mktime 函数时,mktime(0, 0, 0, $m,1,2013)结果与预期一样正确。mktime()当我在 php.ini 中使用或date()运行时,有什么需要寻找的吗?

4

2 回答 2

5

添加第 5 个参数来解决此问题。

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

现在是第 31 天,只有上面的月份有 31 天。

为了澄清会发生什么,第 5 个参数的默认值是当天。您传递的数字高于该月的天数,它会滚动到下个月。

于 2013-07-31T07:48:33.083 回答
2

day您必须在函数中传递第 5 个参数mktime

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

小于 1 天(包括负值)参考上个月的天数。

于 2013-07-31T07:51:07.640 回答