Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP选择选项从当前月份返回2个月前_Php_Option - Fatal编程技术网

PHP选择选项从当前月份返回2个月前

PHP选择选项从当前月份返回2个月前,php,option,Php,Option,嗨,我想知道 如何从本月起获得分配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> <optio

嗨,我想知道

如何从本月起获得分配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>
$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>
';
2014年9月15日
2014年9月30日
2014年10月15日
2014年10月30日
我有示例代码,但它的输出为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);}
}

?>
例如:

$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>";
}
$currentMonth=日期(“n”);

对于($i=1;$i使用函数日期,这更简单,并且省去了循环

首先是一些理论:

$currentMonth = date("t", time());
根据时间参数中给出的月份,返回31、30或28/29。 time()返回一个unix时间戳,该时间戳没有任何参数,只是“now”,因此是当前月份

如果我们想从下个月算起的天数也一样,只需在time()上加上几秒钟,就足够到下个月了……因此,无论如何,32天将使您精确到下个月

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

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

现在我向您展示了整个解决方案,这意味着您的整个输出可以如下生成:

<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>
$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>
';
$timeNow=time();
$timeNextMonth=$timeNow+(86400*32);//+32天
回声'
“.date(“F 15,Y”,$timeNow)。”
“.date(“F t,Y”,$timeNow)。”
“.日期(“F 15,Y”,下个月$timeNextMonth)。”
“.date(“F t,Y”,下个月$timeNextMonth)。”
';