【问题标题】:PHP Select option return 2 months ago from current monthPHP Select 选项从当前月份返回 2 个月前
【发布时间】:2014-10-24 05:30:31
【问题描述】:

您好,我想知道。

我如何从当前月份获得两个月分配 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);}
}

?>

【问题讨论】:

    标签: php option


    【解决方案1】:

    使用日期功能,更简单,省去循环...

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

    先说一些理论:

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

    这将根据时间参数中给出的月份返回 31、30 或 28/29。 time() 返回一个 unix-timestamp,它没有任何参数,只是“现在”,所以它是当前月份。

    如果我们希望从下个月开始的天数再次执行相同的操作,只需在 time() 中添加秒数,就足以到达下个月...所以 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>
    ';
    

    【讨论】:

      【解决方案2】:

      例如:

      $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>";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-29
        • 2020-05-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-18
        相关资源
        最近更新 更多