1

Desmistificando e dominando datas com PHP

#PHP
Felipe Panegalli
Felipe Panegalli

Salve salve pessoal, tudo tranquilo? Espero que sim :D


Trabalhar com data pode ser muitas vezes complicado ou até mesmo estressante, pois mesmo fazendo os diversos testes, ainda assim o meu resultado pode ser diferente do seu.


Por esse motivo, resolvi fazer este artigo para ajudar a comunidade e também para ficar como um artigo de consulta rápida já que quebrei muito a cabeça para tentar entender certas funções e validá-las.


O tal fuso horário


Como muitos sabem, um dos maiores problemas em várias partes do mundo e também pode ser um grande problema na criação do seu aplicativo/software são datas inconsistentes por questão do fuso horário.


O Brasil, por exemplo, possui 4 fusos do GMT-2 até GMT-5. Por esse motivo existe o famoso horário padrão de Brasília (GMT-3).


Para “setar” em uma aplicação PHP o fuso horário, basta adicionar o código abaixo (considerando horário padrão de Brasília).

<?php
	// Sem o Fuso definido
	echo date(‘H:i:s’) . ‘<br>’;
	// Com Fuso definido
	date_default_timezone_set('America/Sao_Paulo');
	echo date(‘H:i:s’);
?>


E para verificar quais são os Fusos disponíveis, basta adicionar:

<?php
	print_r(timezone_identifiers_list());
?>


O que é esse H:i:s?


Para quem está iniciando no PHP e vem de outra linguagem por exemplo, são caracteres que são identificados e convertidos em data e horário. Abaixo segue uma lista dos mais utilizados. (Não se preocupe, ao final desse artigo irei postar todas as referências de forma completa).


Data:

Caractere | Descrição | Exemplo

d | Dia do mês com zero a esquerda | 01 até 31

m | Representa o Mês com zero a esquerda |01 até 12

y | Representa o ano com 2 algarismos | 21 (pode ser 1921 ou 2021)

Y | Representa o ano com 4 algarismos | 2021


Hora:

Caractere | Descrição | Exemplo

H | Hora em formato de 24 horas | 00 até 23

i | Minutos com zero a esquerda | 00 até 59

s | Segundos com zero a esquerda | 00 até 59


Nota-se que devem ser respeitados os caracteres conforme suas “caixas” pois são “case-sensitives”.


Segue um exemplo de data e hora atual:

<?php 
	echo ‘d/m/Y H:i:s’;
?>


Minha data está no padrão americano e agora?


Esse é um dos problemas mais recorrentes e que percebi durante os anos trabalhando com o PHP: converter data de EN para PT_BR e vice-versa.


Antigamente era muito recorrente ver funções de conversão utilizando a função explode() do PHP (função que quebra uma sentença em array por meio de um caracter) e, querendo ou não, isso pode consumir uma grande quantidade de memória na exibição de um relatório por exemplo.


Por esse motivo, apresento-lhes o strtotime, uma função que pega uma data em formato de string e transforma em um Integer Unix Timestamp.


Essa função recebe dois parâmetros, o formato e a data em formato de string conforme exemplo abaixo:

<?php
	$data = '2021-03-22T18:44:00';
	echo date('d/m/Y - H:i:s ', strtotime($data));
?>


Nesse nosso exemplo, ele pegou uma data tipicamente do Javascript e transformou em uma data/horário em PT_BR sem a necessidade de usar o explode ou outro meio qualquer.


Espero que esse artigo tenha ajudado muita gente. Comenta aí o que você achou e o que você gostaria de ver nos próximos artigos.


Grande abraço,


Ahhh, e as referências que não podem faltar :D:

https://www.php.net/manual/pt_BR/timezones.php

https://www.php.net/manual/pt_BR/function.strftime.php

https://www.php.net/manual/pt_BR/function.date.php


Instagram: https://www.instagram.com/panegalli/

Linkedin: https://www.linkedin.com/in/felipe-panegalli/

Github: https://github.com/felipepanegalli

1
33

Comentários (1)

0
⚡Eros Lima

⚡Eros Lima

22/03/2021 19:53

Realmente Muito bom (adoro PHP, e esta é uma dica show) Felipe só faltou o link do seu contato, top conteúdo, se puder vem comigo:






DIO quero salvar este post para ver depois é possível, fazer isso na plataforma ?

None

Brasil