PHP
Manipulando Datas com PHP
No artigo de hoje, mostrarei algumas maneiras de se trabalhar com datas no PHP utilizando funções nativas e aprendendo a manipula-las, como date(), mktime(), time().
Trabalhar com manipulação de datas no PHP pode lhe gerar uma grande dor de cabeça. Antigamente era necessário decorar diversas funções e mesmo assim não era possível realizar algumas operações, como por exemplo, comparação de datas.
Vamos aprender a trabalhar com datas em PHP utilizando as funções date(), mktime() e time(). Veremos como somar, subtrair, criar e utilizar as funções mencionadas. Além disso, também vamos ver as melhores práticas para salvar as datas em nosso banco de dados, para evitar eventuais problemas no futuro na utilização desses dados.
Trabalhar com datas pode parecer algo bastante simples, mas acredite... trabalhar com datas em qualquer linguagem de programação é algo bastante complexo e trabalhoso.
Você precisa entender o funcionamento das funções e os formatos padrões de data para não fazer algo de maneira incorreta e ter que corrigir tudo depois, ou até mesmo não conseguir executar determinado comando após a comparação entre datas.
Felizmente, o PHP nos deixa milhares de funções para facilitar a nossa vida em se tratando de datas, combinando certas funções você vai conseguir fazer qualquer coisa que precisar.
Por muitas questões veja os melhores formatos para salvar datas no seu banco de dados.
Melhor formato para data no BD
Como nós somos Brasileiros, é natural utilizarmos o formato de data que estamos acostumados, 20/01/2015:
- dd-mm-yyyy
- dd-mm-yy
- dd/mm/yyyy
- dd/mm/yy
O problema é que se utilizarmos este formato de data teremos milhares de erros:
- Primeiro: Não conseguimos somar.
- Segundo: Não conseguimos ordenar nosso banco de dados pela data.
- Terceiro: Este formato não é compatível praticamente com nada, portanto não salve datas no formato DDMMYYYY (Dia, Mês e Ano) e sim YYYY-MM-DD (Ano, Mês e Dia).
Ultimamente tive que aprender a utilizar timestamp para datas, ou seja, é o número da soma dos segundos desde 01/01/1970 até a data que você deseja, por exemplo, neste momento a data atual é 2015-01-20 11:01:28, em timestamp unix é 1421758982.
O valor 1421758982 é algo praticamente ilegível para nós, mas com o PHP eu faço o que quiser com este formato de data, posso utilizar a função date() e colocar a data no formato que mais me agradar de maneira simples.
Se você preferir, também pode utilizar o formato YYYY-MM-DD HH:MM:SS, também não existem problemas na utilização desta forma. A data que citei anteriormente seria 2015-01-20 11:01:28.
Com as horas você não precisa se preocupar, não precisa inverter nada, já que o formato é o mesmo que já conhecemos HH:MM:SS.
Lembre-se que para gravar e manipular a data (back-end), utilizamos no formato timestamp, porém, para você imprimir para o usuário, deve se utilizar um formato legível.
A função date() em PHP
O modo mais simples para pegar qualquer data e formatar os valores como preferir, é utilizando a função date().
A função date() retorna datas em PHP no formato que você desejar. É possível enviar um parâmetro com a data que deseja, ou pegar a data atual caso este parâmetro não seja enviado.
Se você for enviar o parâmetro com a data que deseja, a data deverá estar no formato timestamp unix.
timestamp é opcional.
A função date() precisa de pelo menos um parâmetro para retornar o valor sem nenhum erro, o parâmetro obrigatório é o formato da data, veja os formatos disponíveis:
Fonte: Manual do PHP;
Você pode utilizar os caracteres acima combinados com os caracteres para separação dos valores da sua data, por exemplo:
// Exemplo com barra (/) echo date("d/m/Y"); // Mostra a data atual: 20/01/2015 // Exemplo com traço (-) echo date("d-m-Y"); // Mostra a data atual: 20-01-2015
Você também pode criar uma variável com o valor retornado por date(), veja o exemplo:
$data = date("r"); echo $data; // Mostra Sat, 20 Jan 2015 09:23:43
Também pode para pegar uma data invertida (YYYY-MM-DD), ou no formato timestamp, para imprimir de outras maneiras, por exemplo:
Vamos pegar a data em que eu nasci em timestamp unix: 1421758982.
$data = 1421758982;
Agora vamos formatar no modo DD/MM/YY HH:MM:SS:
$data = 1421758982; echo date("d/m/Y H:i:s", $data); //resultado 2015-01-20 11:01:28
A função mktime() em PHP
Agora que você aprendeu a formatar uma data, vamos aprender a criar um timestamp para utilizarmos com a função date().
A função mktime() é bem mais simples do que date(), mas ambas andam juntas, veja o formato:
echo mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")); // Mostra 1405772776 (data atual)
Ou seja, mktime precisa dos valores hora, minuto, segundo, mês, dia, ano, entre parênteses, para retornar um timestamp. A função date() pode nos dar os valores separadamente, como mostrei anteriormente.
Então você deve estar se perguntando, por que você utilizaria as duas funções, já que date() já retorna a data atual,?
É bem simples, com mktime eu posso somar datas, ou criar timestamp de datas passadas, por exemplo, minha data de nascimento:
// mktime(hora, min., seg., mês, dia, ano); $data = mktime(12,30,20,03,04,1992); // Mostra 03-04-1992 echo date("d-m-Y", $data); // Mostra 03/04/1992 echo date("d/m/Y", $data); // Mostra 03-04-1992 12:30 echo date("d-m-Y H:i", $data); // Mostra 1992 echo date("Y", $data);
Agora vamos somar, para isso eu posso fazer date("m")+1, por exemplo, e estaria somando o mês atual mais um, ou ainda date("Y")+10 e estaria somando o ano atual mais 10.
Você pode somar as datas da maneira que quiser, por exemplo, dia, mês, ano, hora, minuto ou segundo, e o melhor da história, é que se a data passar, o PHP se encarrega de virar o dia, mês, etc.
Veja um exemplo:
$data = mktime(date("H"), date("i"), date("s"), date("m")+20, date("d"), date("Y")); echo date("d-m-Y", $data);
Isso deverá mostrar a data 20-09-2016 (a data da criação deste artigo mais 20 meses), por causa do date("m")+20.
Você também pode subtrair os valores se precisar.
A função time() em PHP
A função time() é a maneira mais simples para se obter um timestamp unix da data atual, simplesmente digite time() e terá o valor:
$data = time(); echo date("d-m-Y", $data); // Mostra 20-01-2015
Você também pode somar time para obter outros valores:
$data = time() + (7 * 24 * 60 * 60); // Data atual mais 7 dias, vezes 24 horas, vezes 60 mins, vezes 60segs. echo date("d-m-Y", $data); // Mostra 27-01-2015
Função explode()
Em algum momento do seu script, você pode ter que dividir uma data, para isso você pode utilizar a função explode().
Veja um exemplo:
<?php // Data atual 20/01/2015 $data = date("d/m/Y"); // Explode a barra e retorna três arrays $data = explode("/", $data); // Cria três variáveis $dia $mes $ano list($dia, $mes, $ano) = $data; // Recria a data invertida $data = "$ano/$mes/$dia"; // Mostra a data invertida echo $data;
Bom, neste artigo foram apresentadas algumas maneiras de se trabalhar com datas no PHP, utilizando-se de algumas funções nativas e aprendendo a trabalhar com elas.
Existem muitas outras mais maneiras de se trabalhar com datas, caso tenham alguma dúvida, crítica ou sugestão comente abaixo que teremos o prazer em tentar lhe ajudar. =)
Gigasystems Login:
Informe seu e-mail abaixo para continuar!
XVeja Também:
Artigos Relacionados a categoria: PHP
Cotações para compra e venda de Moedas estrangeiras com PHP
27 July de 2016
Gerenciador de dependências Composer
14 January de 2016
Erro ao acessar um arquivo externo com o comando file_get_content
04 November de 2015
Baixando anexo do email no servidor com IMAP e PHP
27 August de 2015
Olá, deixe seu comentário para Manipulando Datas com PHP
Andre Souza