html 月份的下拉列表

html dropdown list for month

请问为什么月份的下拉列表不是按照代码说的那样?下拉列表应该显示从9月到10月。

The screenshot image of the dropdown list

<select class="selectpicker" id="selectmonth" onchange="myFunction()">
    <option value="<?php echo date('m', strtotime('-1 month')) ?>"><?php echo date('F', strtotime('-1 month')) ?></option>
    <option value="<?php echo date('m', strtotime('-2 month')) ?>"><?php echo date('F', strtotime('-2 month')) ?></option>
    <option value="<?php echo date('m', strtotime('-3 month')) ?>"><?php echo date('F', strtotime('-3 month')) ?></option>
    <option value="<?php echo date('m', strtotime('-4 month')) ?>"><?php echo date('F', strtotime('-4 month')) ?></option>
    <option value="<?php echo date('m', strtotime('-5 month')) ?>"><?php echo date('F', strtotime('-5 month')) ?></option>
    <option value="<?php echo date('m', strtotime('-6 month')) ?>"><?php echo date('F', strtotime('-6 month')) ?></option>
    <option value="<?php echo date('m', strtotime('-7 month')) ?>"><?php echo date('F', strtotime('-7 month')) ?></option>
    <option value="<?php echo date('m', strtotime('-8 month')) ?>"><?php echo date('F', strtotime('-8 month'))?></option>
    <option value="<?php echo date('m', strtotime('-9 month')) ?>"><?php echo date('F', strtotime('-9 month')) ?> </option>
    <option value="<?php echo date('m', strtotime('-10 month')) ?>"><?php echo date('F', strtotime('-10 month')) ?> </option>
    <option value="<?php echo date('m', strtotime('-11 month')) ?>"><?php echo date('F', strtotime('-11 month')) ?> </option>
    <option value="<?php echo date('m', strtotime('-12 month')) ?>"><?php echo date('F', strtotime('-12 month')) ?> </option>
</select>

我猜这是因为一般来说一个月相当于30天,而今天是10月31日。从技术上讲,31-30 是 10 月 1 日,当您回显 date('F', strtotime('-1 month')).

时确实是 10 月
// while tested in http://sandbox.onlinephpfunctions.com/. Them seem to have Oct 31 as their system date
<?php echo date('F', strtotime('first day -1 month'));?> //Outputs: October
<?php echo date('F', strtotime('first day -2 month'));?> //Outputs: September
<?php echo date('F', strtotime('first day -3 month'));?> //Outputs: August

Try this:

<select class="selectpicker" id="selectmonth" onchange="myFunction()">
  <?php for($i=1;$i<13;$i++){ ?>
  <option value="<?php echo date('m', strtotime("first day -$i month")) ?>"><?php echo date('F', strtotime("first day -$i month")) ?></option>
  <?php }?>
</select>

更新 当我浏览时,我发现如下 working solution:

<select class="selectpicker" id="selectmonth" onchange="myFunction()">
  <?php for($i=1;$i<13;$i++){
  $d=new DateTime('now');
  $d->modify("first day +1 day -$i month");
  ?>
  <option value="<?php echo $d->format('m') ?>"><?php echo $d->format('F') ?></option>
  <?php }?>
</select>

完成

      <select class="selectpicker" id="selectmonth" onchange="myFunction()">
                        <option value="<?php echo date("m",strtotime("-1 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-1 Months",strtotime(date('01-m-Y')))) ?></option>
                        <option value="<?php echo date("m",strtotime("-2 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-2 Months",strtotime(date('01-m-Y')))) ?></option>
                        <option value="<?php echo date("m",strtotime("-3 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-3 Months",strtotime(date('01-m-Y')))) ?></option>
                        <option value="<?php echo date("m",strtotime("-4 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-4 Months",strtotime(date('01-m-Y')))) ?></option>
                        <option value="<?php echo date("m",strtotime("-5 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-5 Months",strtotime(date('01-m-Y')))) ?></option>
                        <option value="<?php echo date("m",strtotime("-6 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-6 Months",strtotime(date('01-m-Y')))) ?></option>
                        <option value="<?php echo date("m",strtotime("-7 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-7 Months",strtotime(date('01-m-Y')))) ?></option>
                        <option value="<?php echo date("m",strtotime("-8 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-8 Months",strtotime(date('01-m-Y'))))?></option>
                        <option value="<?php echo date("m",strtotime("-9 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-9 Months",strtotime(date('01-m-Y')))) ?> </option>
                        <option value="<?php echo date("m",strtotime("-10 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-10 Months",strtotime(date('01-m-Y')))) ?> </option>
                        <option value="<?php echo date("m",strtotime("-11 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-11 Months",strtotime(date('01-m-Y')))) ?> </option>
                        <option value="<?php echo date("m",strtotime("-12 Months",strtotime(date('01-m-Y')))) ?>"><?php echo date("F",strtotime("-12 Months",strtotime(date('01-m-Y')))); ?> </option>
                    </select>