php函数列出下拉列表的月份

时间:2011-09-30 01:48:55

标签: php

我有这个功能

function bookingMonthField() {
$str="";
        for($i = 0; $i < 16; $i++) {
        $time = mktime(0, 0, 0, date('n') + $i);
        $str .="<option value=" . date('Yn', $time) . ">" . date('M Y', $time) . "</option>";   
    }
  return $str;
  }

除了返回2月和3月2日之外,它几乎可以正常工作:

<option value="20119">Sep 2011</option>
<option value="201110">Oct 2011</option>
<option value="201111">Nov 2011</option>
<option value="201112">Dec 2011</option>
<option value="20121">Jan 2012</option>
<option value="20123">Mar 2012</option>
<option value="20123">Mar 2012</option>
<option value="20124">Apr 2012</option>
<option value="20125">May 2012</option>
<option value="20126">Jun 2012</option>
<option value="20127">Jul 2012</option>
<option value="20128">Aug 2012</option>
<option value="20129">Sep 2012</option>
<option value="201210">Oct 2012</option>
<option value="201211">Nov 2012</option>
<option value="201212">Dec 2012</option>

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:2)

告诉你的剧本,你想要的是本月的第一天:

$time = mktime(0, 0, 0, date('n') + $i, 1);

或等待另一天,然后您的网站会自动修复:)

答案 1 :(得分:1)

如果没有提供,

mktime将使用当天。今天是29日,所以2月被跳过了。相反,请指定当天的“1”。