Php 寻找闰年

Php 寻找闰年,php,for-loop,Php,For Loop,我正在使用一个php代码,首先我使用for station for($i=0; $i<4; $i++) 对于($i=0;$i为什么不这样 <?php for($i=0; $i<16; $i++) { $day = date("d", mktime(0, 0, 0, 2, 29, date("Y")+$i)); if($day == 29) { $year = date("Y")+$i;

我正在使用一个php代码,首先我使用for station

for($i=0; $i<4; $i++)
对于($i=0;$i为什么不这样

<?php
    for($i=0; $i<16; $i++)
    {
        $day = date("d", mktime(0, 0, 0, 2, 29, date("Y")+$i));
        if($day == 29)
        {
            $year = date("Y")+$i;
            echo "<p>The next leap year is 29th February $year</p><br>";
        }
    }
?>

为什么不这样

<?php
    for($i=0; $i<16; $i++)
    {
        $day = date("d", mktime(0, 0, 0, 2, 29, date("Y")+$i));
        if($day == 29)
        {
            $year = date("Y")+$i;
            echo "<p>The next leap year is 29th February $year</p><br>";
        }
    }
?>

使用,只需检查年份。使用一条语句即可

function is_leap_year($year)
{
   return ((($year % 4) == 0) && ((($year % 100) != 0) || (($year % 400) == 0)));
}
使用,只需检查年份。使用一个单独的声明

function is_leap_year($year)
{
   return ((($year % 4) == 0) && ((($year % 100) != 0) || (($year % 400) == 0)));
}

您可以使用以下命令检查闰年:

输出

2013 is not a leap year
2014 is not a leap year
2015 is not a leap year
2016 is a leap year
2017 is not a leap year
2018 is not a leap year
2019 is not a leap year
2020 is a leap year

您可以使用以下命令检查闰年:

输出

2013 is not a leap year
2014 is not a leap year
2015 is not a leap year
2016 is a leap year
2017 is not a leap year
2018 is not a leap year
2019 is not a leap year
2020 is a leap year
使用这些类可以使这类事情快速而简单:-

$datetime = new \DateTime("2013/01/01");
$interval = new \DateInterval('P1Y');
$period = new \DatePeriod($datetime, $interval, 20);
foreach($period as $date){
    if((bool)$date->format('L')){
        echo $date->format('Y') . " is a Leap Year</br>\n";
    }
}
您可以利用此功能来促进重复使用:-

/**
 * @param int $numberOfYears
 * @return array
 */
function getLeapYears($numberOfYears = 10){
    $result = array();
    $datetime = new \DateTime();
    $interval = new \DateInterval("P1Y");
    $period = new \DatePeriod($datetime, $interval, $numberOfYears);
    foreach($period as $date){
        if((bool)$date->format('L')){
            $result[] = $date->format('Y');
        }
    }
    return $result;
}
或测试给定年份是否为闰年:-

function isLeapYear($year)
{
    return (bool)\DateTime::createFromFormat('Y', $year)->format('L');
}
使用这些类可以使这类事情快速而简单:-

$datetime = new \DateTime("2013/01/01");
$interval = new \DateInterval('P1Y');
$period = new \DatePeriod($datetime, $interval, 20);
foreach($period as $date){
    if((bool)$date->format('L')){
        echo $date->format('Y') . " is a Leap Year</br>\n";
    }
}
您可以利用此功能来促进重复使用:-

/**
 * @param int $numberOfYears
 * @return array
 */
function getLeapYears($numberOfYears = 10){
    $result = array();
    $datetime = new \DateTime();
    $interval = new \DateInterval("P1Y");
    $period = new \DatePeriod($datetime, $interval, $numberOfYears);
    foreach($period as $date){
        if((bool)$date->format('L')){
            $result[] = $date->format('Y');
        }
    }
    return $result;
}
或测试给定年份是否为闰年:-

function isLeapYear($year)
{
    return (bool)\DateTime::createFromFormat('Y', $year)->format('L');
}

这里的问题到底是什么?我试图实现的是添加多个for语句,而不是使用多个php代码。您能详细说明一下吗?@Phas1c使用带有
for($i=0;$i<16;$i++)的单个for语句
这是OP提出错误问题或回答错误问题的所有答案的一个主要示例:)这里的问题到底是什么?我试图实现的是添加多个for语句而不是使用多个php代码。您能详细说明一下吗?@Phas1c使用带有
for的单个for语句吗($i=0;$i<16;$i++)
这是OP提出错误问题或所有答案都回答错误问题的一个典型例子:)虽然这是一个好答案,但有太多不必要的大括号。这里有一个改进的版本(没有这些额外的大括号):
return$year%4==0&($year%100!=0 | |$year%400==0)虽然这是一个很好的答案,但是有太多不必要的大括号。这里有一个改进的版本(没有这些额外的大括号):
return$year%4==0&($year%100!=0 | |$year%400==0)