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