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

发布于 2024-12-18 02:20:00 字数 661 浏览 0 评论 0原文

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

<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 来解决问题,尽管这一次我花了太多时间却取得了太少的进展。

谁能帮助我完成这个看似简单的挑战!?

谢谢你!!!

I have really been trying hard to achieve the following:

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

Where the following are dynamic according to today's date:

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

and repeating the process for the following 12 months ahead of today.

I made some progress with my rudimentary knowledge of PHP, I have admitted I need help from those more knowledgeable than myself!

It does look simple and I often look at stackoverflow to solve things though on this occasion I have spent far too much time and made too little progress.

Can anyone give me a hand to this seemingly simple challenge!?

Thank you!!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

假情假意假温柔 2024-12-25 02:20:00

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

接受的答案是错误的。请参阅此处:

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

修复为“第一天”

Commenting for anybody who finds question.

The accepted answer is wrong. See here:

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

use this instead:

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

The fix being "first day of"

鹿港巷口少年归 2024-12-25 02:20:00

此片段是概念证明,可准确实现您想要的效果。

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

This snippet is proof of concept achieving exactly what you want.

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

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

If you want to print the name of the month in your specific language, you should take a look at setlocale and just use the F parameter in date

╰◇生如夏花灿烂 2024-12-25 02:20:00

干得好:

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

Here you go:

$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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文