Instalação
Artigos
Cursos
Loja
INSTALAÇÃO
ARTIGOS
CURSOS
EBOOKS
DOWNLOADS
LOJA
ARTIGOS
Manipulando datas com PHP
O `PHP` é uma linguagem de programação completa e cheia de recursos, ainda mais quando falamos em datas. Ele consegue oferecer diversas funções para manipulá-las, vamos ver algumas delas nesse post. ## Date [Fonte](http://php.net/manual/pt_BR/function.date.php) A mais simples das funções de data do `PHP` é a `date()`, com ela é possível gerar uma data apenas com um formado informado. ```php date(string $formato [, int $timestamp]) ``` **Exemplo básico** ```php
# Time A função `time()` retorna um número inteiro que representa a quantidade de segundos passadas desde o início da [Era Unix](https://pt.wikipedia.org/wiki/Era_Unix). A Era Unix começou em `01/01/1970 00:00:00 UTC`, para o fuso brasileiro a data inicial é `31/12/1969 21:00:00`. Isso foi criado para facilitar a manipulação de datas por computadores, de maneira que, todas as datas possuem uma representação em um número inteiro, por exemplo: |Data| Valor em epoch | |--|--| | 06/06/2006 06:06:06 | 1149584766 | | 06/06/2006 06:06:07 | 1149584767 | # Date + time Quando falamos da função `date()` mostramos exemplos onde ela exibia a data atual usando o padrão informado. Para gerar qualquer data usando um padrão na função `date()` basta informar o valor epoch da data, ou seja, informar o valor em segundos daquela data: ```php "; // Hoje echo strtotime("today"); echo "
"; // Amanhã echo strtotime("tomorrow"); echo "
"; // Hoje +10 dias echo strtotime("+10 day"); echo "
"; // Hoje mais 3 semanas echo strtotime("+3 week"); echo "
"; // Dia 11 de setembro de 2001 echo strtotime("11 September 2001"); echo "
"; // Hoje +1 semana + 2 dias + 4 horas + 2 segundos echo strtotime("+1 week 2 days 4 hours 2 seconds"); echo "
"; // Próximo domingo echo strtotime("next Sunday"); echo "
"; // Última sexta-feira echo strtotime("last Friday"); echo "
"; ``` O segundo parâmetro da função `strtotime()` serve para definir uma data base, ao invés de usar hoje como ponto inicial é possível definir outro valor, informando o valor epoch/Unix da data desejada.
# datetime [Fonte](http://php.net/manual/pt_BR/datetime.construct.php) A classe `DateTime` permite o desenvolvedor manipular de vários modos datas em `PHP`, com ela podemos adicionar e subtrair, calcular diferenças entre datas, etc. É possível criar objetos da classe `DateTime` nos mesmo moldes que a função `strtotime()`, podemos usar uma data ou um um valor esperado, exemplos: ```php format('m/Y'); // Irá exibir o mês/ano atual ``` ### Modify `modify()` é um método que altera um objeto DateTime, aumentando ou diminuindo ele. O método deve ser usado em um objeto `DateTime` e o parâmetro válido que segue os formatos de [data e hora.](http://php.net/manual/pt_BR/datetime.formats.php) Exemplos: ```php modify('+1 day'); echo $date->format('Y-m-d'); $date = new DateTime('2012-12-21'); $date->modify('next sunday'); echo $date->format('Y-m-d'); $date = new DateTime('2012-12-21'); $date->modify('previous sunday'); echo $date->format('Y-m-d'); $date = new DateTime('2012-12-21'); $date->modify('-12 days'); echo $date->format('Y-m-d'); ``` ## Diferença entre datas `diff` Aplicar a função `diff` em um objeto `DateTime` irá retornar um objeto da classe `DateInterval`, nele estarão todas as informações da diferença entre as datas envolvidas. Exempo: ```php diff($b); var_dump($intervalo); ``` A função intervalo terá as seguintes informações: ```php object(DateInterval)[3] public 'y' => int 0 public 'm' => int 3 public 'd' => int 3 public 'h' => int 0 public 'i' => int 0 public 's' => int 0 public 'f' => float 0 public 'weekday' => int 0 public 'weekday_behavior' => int 0 public 'first_last_day_of' => int 0 public 'invert' => int 0 public 'days' => int 93 public 'special_type' => int 0 public 'special_amount' => int 0 public 'have_weekday_relative' => int 0 public 'have_special_relative' => int 0 ``` A diferença entre as datas foi de três meses e três dias ou num total de 93 dias. # Intervalo de datas Com o `PHP` é muito simples gerar um intervalo de datas, para isso basta usar a função `DatePeriod` Para criar um intervalo são necessárias três coisas: 1. Início 2. Fim 3. Intervalo O início e o fim são auto-explicativos, o intervalo vai ser a nossa frequência do intervalo, por exemplo, se ela vai ser diária ou semanal. No exemplo abaixo será gerada uma lista com todas as datas do mês de janeiro de 2019, foi usado uma frequência de um dia `P1D` ```php format("d/m/Y") . "
"; } ``` O resultado desse exemplo será: ```php 01/01/2019 02/01/2019 03/01/2019 04/01/2019 05/01/2019 06/01/2019 07/01/2019 08/01/2019 09/01/2019 10/01/2019 11/01/2019 12/01/2019 13/01/2019 14/01/2019 15/01/2019 16/01/2019 17/01/2019 18/01/2019 19/01/2019 20/01/2019 21/01/2019 22/01/2019 23/01/2019 24/01/2019 25/01/2019 26/01/2019 27/01/2019 28/01/2019 29/01/2019 30/01/2019 31/01/2019 ```
# Navegar entre datas Usando a classe `DateTime` é possível navegar entre datas e dias específicos. No exemplo a seguir pode-se ver a navegação entre períodos daquelas datas. ```php modify("next sunday"); // Primeiro domingo do mês $data->modify("first sunday of this month"); // Ultimo domingo do mês $data->modify("last sunday of this month"); // Último domingo do mês $data->modify("last sunday of this month"); // Próximo mês $data->modify("next month"); // Proxíma semana $data->modify("next week"); ```
COMENTE SOBRE