PHP Select选项从当月开始返回2个月前

时间:2014-10-24 05:30:32

标签: php option

嗨,我想知道。

如何从当月分配2个月分配1-15和16到31

我需要这样的输出:

<option value="2014-09-15">September 15, 2014</option>
<option value="2014-09-30">September 30, 2014</option>
<option value="2014-10-15">October 15, 2014</option>
<option value="2014-10-30">October 30, 2014</option>

我有示例代码,但其输出为12个月

<?php

for ($i = 0; $i <= 11; ++$i) 
{
$time = strtotime(sprintf('+%d months', $i));
$value = date('m', $time);
$label = date('F', $time);

//if month is set stay on that month

if($month==$value)
{ printf('<option value="%s" selected="selected">%s</option>' , $value, $label);
}
else
{printf('<option value="%s">%s</option>', $value, $label);}
}

?>

2 个答案:

答案 0 :(得分:1)

例如:

$currentMonth = date("n");
for($i=1;$i<3;$i++) {
    $monthNum = $currentMonth - $i;
    if($monthNum<1)
        $monthNum = 12 - $monthNum;
    $monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
    //here use $monthNum and $monthName for output
    print "<option>......</option>";
}

答案 1 :(得分:1)

使用功能日期,这更容易,让你不用再循环......

http://de2.php.net/manual/en/function.date.php

首先是一些理论:

$currentMonth = date("t", time());

根据时间参数给出的月份,返回31,30或28/29。 time()返回一个没有任何参数的unix-timestamp&#34; now&#34;所以它是当月。

如果我们想要从下个月开始的天数再做同样的事情,只需在时间()上添加秒数,这足以达到下个月...所以32天无论如何都会带你到下一个月月...

旁注:1小时有3600秒* 24 = 1天有86400。

$nextMonth = date("t", time() + (86400 * 32)); //+32 days will guarantee next month

现在我向您展示整个解决方案,几乎意味着您可以像这样生成整个输出:

$timeNow = time();
$timeNextMonth = $timeNow + (86400 * 32); //+ 32 days

echo '
    <select name="date">
        <option value="' . date("Y-m-15", $timeNow) . '">' . date("F 15, Y", $timeNow) . '</option>
        <option value="' . date("Y-m-t", $timeNow) . '">' . date("F t, Y", $timeNow) . '</option>
        <option value="' . date("Y-m-15", $timeNextMonth) . '">' . date("F 15, Y", $timeNextMonth) . '</option>
        <option value="' . date("Y-m-t", $timeNextMonth) . '">' . date("F t, Y", $timeNextMonth) . '</option>
    </select>
';