【问题标题】:Dynamic date options for the next 12 months未来 12 个月的动态日期选项
【发布时间】:2012-01-07 13:24:33
【问题描述】:

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

<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 来解决问题,虽然这次我花了太多时间,进展太少。

谁能帮我解决这个看似简单的挑战!?

谢谢!!!

【问题讨论】:

    标签: php forms date datepicker dynamic-data


    【解决方案1】:

    为任何发现问题的人发表评论。

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

    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>';
    }
    ?>
    

    修复是“第一天”

    【讨论】:

    • 很好地指出了“第一天”。我每天都在使用 PHP 超过 10 年,而且 strtotime() 非常频繁,因为它的功能和灵活性。这是我第一次看到使用它。
    【解决方案2】:

    这个 sn-p 是实现您想要的概念的证明。

    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 参数

    【讨论】:

    • 您可以使用mktime 而不是strtotime 来提高效率和结果的可预测性。
    • 这个方法考虑到了年份的变化,这对 mktime 来说更具挑战性。
    • 谢谢一月!!!我可以相信那是多么容易,学习 PHP 是具有挑战性的,尽管当事情发生时它是如此的酷!最后,setlocale 命令不起作用,所以我只使用了一个带有西班牙语月份名称的数组并像这样打印它们!再次感谢你真的帮助了我!
    【解决方案3】:

    给你:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 2013-02-02
      • 1970-01-01
      • 2021-12-06
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多