Trabalhando com datas no PHP

No PHP existem diversas funções para o tratamento de datas. Você pode exibir a data atual (antigas e futuras também) de várias formas. Usando a função date() do PHP é possível formatar a data atual de diversas formas, vamos a alguns parâmetros mais comuns que podem ser usados:

d – Dia do mês com 2 dígitos
D – Representação textual do dia (três letras: Mon até Sun)
m – Representação numérica do mês com 2 dígitos
M – Representação textual do mês (três letras: Jan a Dec)
y – Representação do ano com 2 dígitos
Y – Representação do ano com 4 dígitos
l (‘L’ minúsculo) – Descrição do dia da semana (Sunday até Saturday)
h – Formato em 12 horas
H – Formato em 24 horas
i – Minutos com 2 dígitos
s – Segundos com 2 dígitos
A – AM ou PM

Mas onde você usa isso? Essas letras são argumentos da função date, veja alguns exemplos:

echo date('d/m/Y'); // Resultado: 12/03/2009
echo date('H:i:s'); // Resultado: 03:39:57
echo date('d/m h:i A'); // Resultado: 12/03 03:39 AM

Viram como é fácil?

No MySQL existem os tipos de coluna DATE e DATETIME que são para armazenar datas e datas com hora respectivamente. O formato de entrada de um campo DATE é AAAA-MM-DD e do DATETIME é AAAA-MM-DD HH:MM:SS. Pra usar a função date() e gerar datas no formato de entrada do MySQL é só fazer assim:

$data = date('Y-m-d'); // Formato DATE: 2009-03-12
$data = date('Y-m-d H:i:s') // Formato DATETIME: 2009-03-12 03:39:57

Uma função muito usada é a time(): ela retorna um valor chamada UNIX TIMESTAMP que é o número de segundos que se passaram desde 1970 até agora. É um número de 11 algarismos (até agora) e também serve como segundo argumento da função date() quando queremos formatar uma data antiga ou futura.

echo time(); // Mostra o timestamp atual: 1236844015

$timestamp = time(); // Salva o timestamp atual numa variável
echo date('d/m/Y H:i:s', $timestamp); // Exibe DD/MM/YYYY HH:MM:SS em função de um timestamp

Quando se precisa trabalhar com datas antigas e/ou futuras, uma função útil para ajudar a encontrar o timestamp é a mktime(), podemos usar ela da seguinte forma:

// Ordem dos argumentos do mktime(): hora, minuto, segundo, mes, dia e ano

$timestamp = mktime(20, 03, 58, 02, 09, 1993); // Gera o timestamp da data 09/02/1993 as 20:03:59
echo date('d/m ~ h:i', $timestamp); // Resultado: 09/02 ~ 20:03

Se você está pegando datas salvas no MySQL pode reparar que ela vem no formato AAAA-MM-DD, pra gerar o timestamp de uma data assim é só usar a função strtotime(), dessa maneira:

$data_mysql = '2009-03-12 03:54:21';
$timestamp = strtotime($data_mysql); // Gera o timestamp de $data_mysql
echo date('d/m/Y', $timestamp); // Resultado: 12/03/2009

Acredito que eu não tenha falado de nem metade de todas as funções para manipulação e controle de datas do PHP, mas essas são, sem dúvida, as mais importantes e mais usadas… Dê uma olhada na documentação (no fim deste post) de cada uma delas que você encontrará outros exemplos e formas de uso.

Abraços e até a próxima!

Documentação Oficial:

  • Função date() » Função para formatar datas
  • Função time() » Retorna o UNIX TIMESTAMP atual
  • Função mktime() » Cria um timestamp em função de seus argumentos (uma data específica)
  • Função strtotime() » Gera o timestamp de uma data em formato textual

4 thoughts on “Trabalhando com datas no PHP

  1. Pingback: Trabalhar com datas em PHP. « « Bitmasters Bitmasters

  2. Djalma Bento

    Pocha Thiago salvou viu cara, tudo fica mais fácil agora, parabéns…
    Estimulou um ou duas vídeo aulas. breve…
    sou webdesign e amante da linguagem PHP, se precisar estarei ai para ajudar.

  3. Nayra

    Nossa.. me ajudou muito!!
    Deu tudo certinho aqui para mim.

    Usei essa função ‘strtotime()’ e funcionou muito bem. Nunca tinha usado ela.

    Vlw mesmo Thiagoo!!

Comments are closed.