每年自动增加循环年数

时间:2012-10-01 20:43:45

标签: php

  

可能重复:
  How to increment date with 1 (day/year) in PHP?

我不确定从哪里开始,但我试图在1928年开始一年,并在1948年停止,并且每年增加一年,因此自2012年以来日期范围是1928年至1948年和2013年将是1929年至1949年和2014年将是1930年至1950年等等......

现在我只有一个基本的循环,什么时候开始和停止岁月,但它不是太动态,就像我说我几乎在哪里开始其他日期('Y')+ 1 < / p>

for($i=1928;$i<=date('Y');$i++)
{
    echo '<option value='.$i.'>'.$i.'</option>';
    if($i == '1948'){break;}
}

5 个答案:

答案 0 :(得分:16)

所以你希望它介于当前年份减去84和当前年份减去64之间?使用此代码:

$firstYear = (int)date('Y') - 84;
$lastYear = $firstYear + 20;
for($i=$firstYear;$i<=$lastYear;$i++)
{
    echo '<option value='.$i.'>'.$i.'</option>';
}

编辑:针对性能进行了更新。当前年份在循环之前确定(根据Pitchinnate的评论)。

答案 1 :(得分:2)

试试这个:

$year = date('Y');
$add = $year - 2012;
$min = 1928 + $add;
$max = $min + 20;
for($i=$min;$i<=$max;$i++)
{
    echo '<option value='.$i.'>'.$i.'</option>';
}

我不希望在for循环中使用日期('Y')或任何评估,因为每次循环都会计算它。关于此事Article

答案 2 :(得分:2)

for($i =0; $i <= 20 ;$i++)
{
    $year = date('Y') - 84 + $i;
    echo '<option value='.$year.'>'.$year.'</option>';
}

答案 3 :(得分:2)

看起来你有一个常数,你想要的日期范围是多少,你可以用来编写一个适合你的循环。

自2012年以来,您希望范围从2012年的1928年开始,那么我们可以使用2012 - 1928 = 84,因此开始范围的年份应始终为84比当年少。

因此我们可以编写如下代码:

$startingYear = date('Y') - 84;
$endingYear = $startingYear + 20;

for ($i = $startingYear;$i <= $endingYear;$i++)
{
    echo '<option value='.$i.'>'.$i.'</option>';
}

答案 4 :(得分:1)

这样的东西?

$base_year = 2012;
$start_year = $base_year - 84;
$end_year = $start_year + 20;

for( $i = $start_year; $i <= $end_year; $i++)
{   
    echo '<option value='.$i.'>'.$i.'</option>';
}