DEV Community

Cover image for Desmistificando e dominando datas com PHP
Felipe Panegalli
Felipe Panegalli

Posted on

3 3

Desmistificando e dominando datas com PHP

Salve salve pessoal tudo tranquilo? Espero que sim :D

Trabalhar com datas muitas vezes podem ser complicadas e até mesmo estressantes pois mesmo fazendo os diversos testes, ainda assim o meu resultado pode ser diferente do seu.

Por esse motivo, resolvi fazer esse artigo para ajudar a comunidade bem como para ficar como um artigo de consulta rápida pois, eu pesquisei muito e 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 fuso horário 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’);
?>
Enter fullscreen mode Exit fullscreen mode

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

<?php
    print_r(timezone_identifiers_list());
?>
Enter fullscreen mode Exit fullscreen mode

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 deve ser respeitado os caracteres conforme sua “caixa” pois são “case-sensitives”.

Segue um exemplo de data e hora atual:

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

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

Esse é um dos problemas mais recorrentes que vejo e que passei durante os anos trabalhando com o PHP o converte 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));
?>
Enter fullscreen mode Exit fullscreen mode

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 e comenta ai o que você achou ou o que você gostaria de ver.

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

AWS GenAI LIVE image

Real challenges. Real solutions. Real talk.

From technical discussions to philosophical debates, AWS and AWS Partners examine the impact and evolution of gen AI.

Learn more

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay