Gostou do nosso conteúdo? Te ajudou?
Nos ajude também! Faça um PIX, de qualquer valor:
programacao.progressiva@gmail.com

Como checar se uma data é válida em PHP: checkdate()

Neste tutorial, vamos aprender como verificar se uma determinada data é válida (existente) ou não, em PHP, através da função checkdate().

Baixar apostila PHP Progressivo

Verificando datas: Função checkdate()

Muitas vezes, durante sua carreira de desenvolvedor web PHP, você vai precisar verificar se uma determinada data é válida, ou seja, se ela realmente existiu ou pode existir, como por exemplo, a data de nascimento de uma pessoa.

Se ela colocou 30/02 de qualquer ano, saiba que é um bot, um vírus ou alguém tentando 'trollar' o sistema, pois fevereiro não tem 30 dias.

O PHP possui uma função pré-definida, a checkdate(), que determina se uma data é existente ou não e sua sintaxe é:
boolean checkdate(int month, int day, int year)

Ou seja, você fornece três inteiros: mês, dia e ano e ela te retorna TRUE se a data for válida e FALSE se não existir.

Note que primeiro vem o mês. Diferente de nós do Brasil que usamos o dia primeiro, lá fora é o mês que vem antes, ok?

Por exemplo:
checkdate(5,5,1988)
retorna TRUE

checkdate(2, 29, 2019)
retorna FALSE, pois 2019 não é bissexto

checkdate(2,29,2020)
retorna TRUE, pois 2020 é ano bissexto

Exemplo de checkdate

O script abaixo pede dia, mês e ano ao usuário e verificar se tal data é válida ou não:
<html>
 <head>
  <title>Apostila PHP Progressivo</title>
 </head>
 <body>
 <form action="" method="get">
  Dia<input type="text" name="day" /><br />
  Mês<input type="text" name="month" /><br />
  Ano<input type="text" name="year" /><br />
  <input type="submit" name="submit" value="Testar" />
 </form> 
 <?php
  $dia = $_GET['day'];
  $mes = $_GET['month'];
  $ano = $_GET['year'];
  
  if(checkdate($mes, $dia, $ano))
   echo 'Data válida';
  else
   echo 'Data inválida';
 ?>
 </body>
</html>