列出特定时期之间的闰年

时间:2011-05-17 17:49:42

标签: php

我想给我的学生一个简单的解决方案 查看2001-3000之间的闰年。

我如何在PHP中编写代码? 我肯定使用'L',但我不是如何编写代码:/

6 个答案:

答案 0 :(得分:2)

for($t = new DateTime("1 Jan 2001"); $t->format('Y') <= 3000; $t->modify('+1 year')) {

    if ($t->format('L')) {
        echo $t->format('Y') ." is a leap year". PHP_EOL;
    }
}

答案 1 :(得分:1)

类似的东西:

<?php
for ($i = 2001; $i <= 3000; $i++)
{
    echo $i;

    if (date('L', strtotime($i . '-01-01')))
    {
        echo ' Yes<br />';
    }
    else
    {
        echo ' No<br />';
    }
}

答案 2 :(得分:1)

如果您知道闰年是什么,则无需运行date

闰年是每4年一次,但不是每100年一次,而是每400年一次。

for($yr=2000;$yr<=3000;$yr+=4) {
  if( ($yr % 100  == 0) && !($yr % 400 == 0)) continue;
  echo $yr . "<br />";
}

请注意,我从2000年开始,因为那是闰年。

答案 3 :(得分:1)

$years = range(2001,3000);
function is_leap($year) {
    return date_create("$year-01-01")->format('L');
}
$leapYears = array_filter($years, 'is_leap');

答案 4 :(得分:0)

for($i = 2001; $i <= 3000; $i++) {
    if(date("L", strtotime("01.01.$i")) == 1) echo "$i ";
} 

答案 5 :(得分:0)

来自Wikipedia,这是算法的PHP版本:

function is_leap_year($year){
    if( $year % 400 === 0 )
        return true;
    else if( $year % 100 === 0 )
        return false;
    else if( $year % 4 === 0 )
        return true;
    else
        return false;
}