未来12个月的动态日期选项

时间:2011-11-27 23:09:23

标签: php forms date datepicker dynamic-data

我一直在努力实现以下目标:

<option value="2011-11"><? echo $month[11]?> '11</option>
<option value="2011-12"><? echo $month[12]?> '11</option>
<option value="2012-1"><? echo $month[1]?> '12</option>
<option value="2012-2"><? echo $month[2]?> '12</option>

根据今天的日期,以下内容是动态的:

<option value="YYYY-m"><? echo $month[12]?> 'yy</option>

并在今天之前的12个月内重复这个过程。

我在PHP的基础知识方面取得了一些进展,我承认我需要那些比我更了解的人的帮助!

它确实看起来很简单,我经常看看stackoverflow来解决问题,虽然在这种情况下我花了太多时间并且进展太少。

任何人都可以帮我看看这个看似简单的挑战吗?

谢谢!!!

3 个答案:

答案 0 :(得分:2)

评论任何发现问题的人。

接受的答案是错误的。见这里:

http://www.php.net/manual/en/function.strtotime.php#107331

改为使用:

<?php
for($i=0;$i<=12;$i++)
{
    $time = strtotime("first day of +". $i." months");
    print '<option value="'. date("Y-m", $time)  .'">'.date("Y-m",$time).'</option>';
}
?>

修复是“第一天”

答案 1 :(得分:1)

此代码段是完全符合您要求的概念证明。

for($i=0;$i<=12;$i++)
{
    $time = strtotime("today + ". $i." months");

    print '<option value="'. date("Y-m", $time)  .'">'.date("Y-m",$time).'</option>';
}

如果您想以特定语言打印月份名称,请先查看setlocale,然后使用date中的F参数

答案 2 :(得分:0)

你走了:

$time = time();

foreach (range(0, 12) as $i)
{
    echo '<option value="' . date('Y-m', $time) . '">' . $month[date('m', $time)] . date('y', $time) . '</option>' . "\n";

    if ($i >= 1)
    {
        $time = strtotime('next month', $time);
    }
}