Ano Bissexto - Como saber se é ? Scripts em PHP

Neste tutorial de PHP, vamos te mostrar o algoritmo em PHP que nos diz se um ano é bissexto ou não, usando operadores lógicos.

Exercícios na Apostila de PHP

Algoritmo do Ano Bissexto em PHP

Normalmente, temos 365 dias no ano, onde o mês de fevereiro possui 28 dias.
Porém, a cada 4 anos adicionamos um dia extra, tendo fevereiro 29 dias e o ano 366 dias.

Existem uma lógica, um algoritmo, para saber se um ano vai ser bissexto ou não.
O algoritmo é o seguinte:

Todo ano múltiplo de 400, é sempre bissexto.
Exemplo: 2000, 1600, 1200, etc

OU:

Os anos múltiplos de 4 são bissextos, exceto se forem múltiplos de 100 e não forem de 400.
Exemplo: 1996, 2000, 2004, 2008, 2012, 2016 etc

Script em PHP: Ano Bissexto
Múltiplo de 400:
$ano % 400 == 0: Retorna TRUE

OU
Múltiplo de 4, exceto de 100:
($ano % 4 == 0 && $ano % 100 != 0 ): Retorna TRUE se for

Ou seja, se a expressão a primeira expressão acima for verdade OU a segunda, o ano é bissexto. Se não for TRUE, não será bissexto.

Nosso código HTML + PHP fica:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Ano:  <input type="number" name="year" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $ano = $_GET['year'];
  
  if ( ($ano%4==0 && $ano%100!=0) || $ano%400 == 0)
   echo "$ano é bissexto";
  else
   echo "$ano não é bissexto";
 ?>
 </body>
</html>

Script em PHP: Usando o PHP para identificar anos bissextos

O PHP nativo já possui diveeeersas funções e coisas feitas, prontas pra você simplesmente usar.
No caso, vamos usar a função date() ,que tem várias funcionalidades para trabalharmos com datas.

Não se preocupe, iremos estudar as datas mais adiante em nosso curso.
Script:

<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Ano:  <input type="number" name="year" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php 
  $ano = $_GET['year'];
  $leap = date('L', mktime(0, 0, 0, 1, 1, $ano));
  
  if ($leap)
   echo "$ano é bissexto";
  else
   echo "$ano não é bissexto";
 ?>
 </body>
</html>