Перечисление високосных лет между определенным периодом

#php

#php

Вопрос:

Я хочу дать своим студентам простое решение для просмотра високосных лет между 2001-3000.

Как бы я написал код для этого на PHP? Я уверен, что использую ‘L’, но я не знаю, как написать код :/

Комментарии:

1. Вы учитель? И вы не можете придумать свое собственное решение для этого? (Я мог видеть запрос на лучшее решение, но любое?) …?

Ответ №1:

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

Ответ №2:

Что-то вроде этого :

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

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

Ответ №3:

Нет необходимости запускать date , если вы знаете, что такое високосный год.

Високосный год проводится каждые 4 года, но не каждые 100 лет, а затем снова каждые 400 лет.

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

Обратите внимание, что я начал с 2000 года, поскольку это високосный год.

Ответ №4:

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

Ответ №5:

Из Википедии, вот 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;
}
  

Ответ №6:

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