2
<?php   
        $month = array();
        for ( $i=1; $i<13; $i++ ) {
        $month = date('m', mktime(0,0,0,$i,2,2000));
        $sel = ( $i == date('n') ? ' selected="selected"' : '');
        $options1[] = "<option  value=\"{$month}\" {$sel}>{$month}</option>";
}
        $options_list1 = join("", $options1);
        echo "<select name=\"month\" >{$options_list1}</select>";
        for ( $j=1; $j<32; $j++ ) {
        $theday = date('d', mktime(0,0,0,0,$j,2000));
        $sel = ( $j == date('d') ? ' selected="selected"' : '');
        $options2[] = "<option  value=\"{$theday}\" {$sel}>{$theday}</option>";
}
        $options_list2 = join("\r\n", $options2);
        echo "<select name=\"day\" >{$options_list2}</select>";
        for ( $k=1960; $k<2016; $k++ ) {
        $theyear = date('Y', mktime(0,0,0,0,2,$k));
        $sel1 = ( $k == date('Y') ? ' selected="selected"' : '');
        $options3[] = "<option  value=\"{$theyear}\" {$sel1}>{$theyear}</option>";
}
        $options_list3 = join("\r\n", $options3);
        echo "<select name=\"day\" >{$options_list3}</select>";
?>

它是日、月和年的下拉菜单。日期和月份工作正常,但年份不是,在这一年我的循环工作不正常,今天是 2013 年,它正在选择 2012 年。任何人都可以帮助我吗?

4

1 回答 1

1

你得到了前一年,因为你没有将正确的参数传递给 mktime。作为月份参数的文档状态

相对于上一年年末的月份数。值 1 到 12 参考相关年份的正常日历月。小于 1 的值(包括负值)以相反的顺序引用上一年的月份,因此 0 是 12 月,-1 是 11 月,等等。大于 12 的值引用下一年的适当月份。

所以改变:

$theyear = date('Y', mktime(0,0,0,0,2,$k));

$theyear = date('Y', mktime(0,0,0,1,2,$k));

你很好。

键盘示例

于 2014-02-25T20:03:22.640 回答