Параметры динамической даты на следующие 12 месяцев - PullRequest
2 голосов
/ 28 ноября 2011

Я действительно изо всех сил пытался добиться следующего:

<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, я признал, что мне нужна помощь от тех, кто более осведомлен, чем я!

Это выглядит просто, и я часто обращаюсь к стековому потоку для решения проблем, хотя в этом случае я потратил слишком много времени и сделал слишком мало прогресса.

Может кто-нибудь помочь мне в этом, казалось бы, простом испытании!?

Спасибо !!!

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Комментирование для тех, кто находит вопрос.

Принятый ответ неверен. Смотрите здесь:

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 голос
/ 28 ноября 2011

Этот фрагмент является доказательством того, что концепция достигает именно того, что вам нужно.

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

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

Если вы хотите напечатать название месяца на вашем конкретном языке, вам следует взглянуть на setlocale и просто используйте параметр F в date

0 голосов
/ 28 ноября 2011

Вот, пожалуйста:

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