9

可能重复:
如何在 PHP 中将日期增加 1(日/年)?

我不确定从哪里开始,但我试图让一年从 1928 年开始,到 1948 年停止,并且每年都会增加一年,所以自 2012 年以来,日期范围是 1928 - 1948 年,而 2013 年将是 1929 年- 1949 和 2014 将是 1930 - 1950 等等......

现在我只有一个基本的循环来确定何时开始和停止这些年,但它不是太动态,就像我说的那样,我几乎对除日期('Y')+1 之外的从哪里开始一无所知。

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

5 回答 5

18

所以你想让它在当年负 84 和当年负 64 之间变化吗?使用此代码:

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

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

于 2012-10-01T20:45:05.677 回答
3

试试这个:

$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 循环进行 date('Y') 或任何评估并不是一个好主意,因为每次循环都会计算它。关于这个的文章

于 2012-10-01T20:46:39.160 回答
2
for($i =0; $i <= 20 ;$i++)
{
    $year = date('Y') - 84 + $i;
    echo '<option value='.$year.'>'.$year.'</option>';
}
于 2012-10-01T20:48:26.033 回答
2

像这样的东西?

$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>';
}
于 2012-10-01T20:51:05.527 回答
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>';
}
于 2012-10-01T20:58:52.393 回答