indexHoras.php
(Apenas Leitura)
<?php
require_once("utilsDataHora.php");
$horaSelecionada = '';
if (isset($_GET['horaCalendario']))
$horaSelecionada = $_GET['horaCalendario'];
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>Horas em PHP</title>
</head>
<body>
<form method="GET" name="formularioHr">
<label for = "horaCalendario">Escolha uma hora:</label>
<!-- O type = "time" captura a hora no formato HH:MM -->
<input type = "time" id="horaCalendario" name="horaCalendario" value="<?php echo $horaSelecionada; ?>" onchange="formularioHr.submit()" required >
</form>
</body>
</html>
<?php
if ($horaSelecionada != '') {
// Transforma a hora (HH:MM) em um número Timestamp usando o dia de hoje
$timestamp = strtotime($horaSelecionada);
echo "<h3>Resultados:</h3>";
echo "Hora: " . hora($timestamp) . "<br>";
echo "Minuto: " . minuto($timestamp) . "<br>";
echo "Segundo: " . segundo($timestamp) . "<br>";
echo "Formatada: " . horaFormatada($timestamp) . "<br>";
}
?>
indexDatas.php
(Apenas Leitura)
<?php
require_once("utilsDataHora.php");
$dataSelecionada = '';
if (isset($_GET['dataCalendario']))
$dataSelecionada = $_GET['dataCalendario'];
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>Datas em PHP</title>
</head>
<body>
<form method="GET" name="formularioDt">
<label for = "dataCalendario">Escolha uma data para testar:</label>
<input type = "date"
id = "dataCalendario"
name = "dataCalendario"
value = "<?php echo $dataSelecionada; ?>"
onchange = "formularioDt.submit()"
required
>
</form>
</body>
</html>
<?php
if ($dataSelecionada != '') {
$timestamp = strtotime($dataSelecionada); // Transforma AAAA-MM-DD em TimeStamp
echo "<h3>Resultados:</h3>";
echo "Dia: " . dia($timestamp) . "<br>";
echo "Mês: " . mes($timestamp) . "<br>";
echo "Ano: " . ano($timestamp) . "<br>";
echo "Formatada: " . dataFormatada($timestamp) . "<br>";
echo "Dia da Semana: " . diaDaSemanaFormatada($timestamp) . "<br>";
echo "Primeiro dia do mês: " . dataFormatada(iniMes($timestamp)) . "<br>";
echo "Último dia do mês: " . dataFormatada(fimMes($timestamp)) . "<br>";
echo "Diferença de Hoje em dias: " . dataDif(hoje(), $timestamp, 'D') . "<br>";
echo "Diferença de Hoje em meses: " . dataDif(hoje(), $timestamp, 'M') . "<br>";
echo "Diferença de Hoje em anos: " . dataDif(hoje(), $timestamp, 'Y') . "<br>";
}
?>
utilsDataHora.php
(Apenas Leitura)
<?php
date_default_timezone_set('America/Sao_Paulo');
/******************************************/
/************** Datas e Horas *************/
/******************************************/
function hoje(): int {
return strtotime('today');
}
function agora(): int {
return time();
}
function ano(int $timestamp): int {
return (int) date('Y', $timestamp);
}
function mes(int $timestamp): int {
return (int) date('m', $timestamp);
}
function dia(int $timestamp): int {
return (int) date('d', $timestamp);
}
function hora(int $timestamp): int {
return (int) date('H', $timestamp);
}
function minuto(int $timestamp): int {
return (int) date('i', $timestamp);
}
function segundo(int $timestamp): int {
return (int) date('s', $timestamp);
}
function dataDif(int $timestampInicial, int $timestampFinal, string $unidade = 'D'): int {
$d1 = (new \DateTime())->setTimestamp($timestampInicial);
$d2 = (new \DateTime())->setTimestamp($timestampFinal);
$intervalo = $d1->diff($d2);
return match (strtoupper($unidade)) {
'Y' => $intervalo->y,
'M' => ($intervalo->y * 12) + $intervalo->m,
default => (int) $intervalo->days,
};
}
function iniMes(int $timestamp): int {
return strtotime(date('Y-m-01 00:00:00', $timestamp)); // primeiro dia do mês da data informada
}
function fimMes(int $timestamp): int {
return strtotime(date('Y-m-t 23:59:59', $timestamp)); // (Timestamp) correspondente ao último dia do mês da data informada
}
function dataFormatada(int $timestamp, string $formato = 'd/m/Y'): string {
return date($formato, $timestamp);
}
function horaFormatada(int $timestamp, string $formato = 'H:i:s'): string {
return date($formato, $timestamp);
}
function diaDaSemana(int $timestamp): int { // 1 (Domingo) a 7 (Sábado)
return (int) date('w', $timestamp) + 1;
}
function diaDaSemanaFormatada(int $timestamp): string {
$dias = [
1 => 'Domingo',
2 => 'Segunda-feira',
3 => 'Terça-feira',
4 => 'Quarta-feira',
5 => 'Quinta-feira',
6 => 'Sexta-feira',
7 => 'Sábado'
];
return $dias[diaDaSemana($timestamp)]; // nome do dia da semana por extenso
}
?>
indexDataHora.php
(Apenas Leitura)
<?php
require_once("utilsDataHora.php");
$dataHoraSelecionada = '';
if (isset($_GET['dataHoraCalendario'])) {
$dataHoraSelecionada = $_GET['dataHoraCalendario'];
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>Data e Hora Combinadas</title>
</head>
<body>
<form method="GET" name="formularioDtHr">
<label for = "dataHoraCalendario">Escolha Data e Hora:</label>
<input type = "datetime-local" id="dataHoraCalendario" name="dataHoraCalendario" value="<?php echo $dataHoraSelecionada; ?>" onchange="formularioDtHr.submit()" required>
</form>
</body>
</html>
<?php
if ($dataHoraSelecionada != '') {
// O HTML envia no formato "AAAA-MM-DDTHH:MM" (o "T" separa a data da hora)
// O strtotime entende esse formato e gera o Timestamp
$timestamp = strtotime($dataHoraSelecionada);
echo "<h3>Resultados:</h3>";
echo "Data Formatada: " . dataFormatada($timestamp) . "<br>";
echo "Hora Formatada: " . horaFormatada($timestamp) . "<br>";
echo "Dia da Semana: " . diaDaSemanaFormatada($timestamp) . "<br>";
echo "Dia: " . dia($timestamp) . "<br>";
echo "Mês: " . mes($timestamp) . "<br>";
echo "Ano: " . ano($timestamp) . "<br>";
echo "Hora: " . hora($timestamp) . "<br>";
echo "Minuto: " . minuto($timestamp) . "<br>";
}
?>