Transformar datas para gravar no banco de dados (MySQL, Postgres e outros)
Publicado por Phylipe Venancio Soares (última atualização em 29/03/2018)
[ Hits: 10.346 ]
Homepage: http://www.energiageradores.com
Download funcoes_datas.php.txt
É muito chato ter um campo de data preenchido aos olhos do usuário no formato dd/mm/YYYY e quando vai gravar no banco de dados ter que fazer malabarismos.
Por isso fiz duas funções que convertem as datas para gravar no banco de dados e também ao contrário, pegar o resultado gravado no banco de dados e converter para um formato mais agradável ao usuário final.
As datas podem ser passadas com horário ou não.
<?php
function mysql2date($data){
/*
Formato da data:
2018-03-21 14:47:25 -> retorna -> 21/03/2018 14:47:25
2018-03-21 14:47 -> retorna -> 21/03/2018 14:47
2018-03-21 -> retorna -> 21/03/2018
*/
$data = trim($data);
$ano = substr($data,0,4);
$mes = substr($data,5,2);
$dia = substr($data,8,2);
$data_arrumada = "$dia/$mes/$ano";
## Se a data fornecida tiver hora, coloca tudo junto.
if(strlen($data)==19){
$caracteres = -8;
}
if(strlen($data)==16){
$caracteres = -5;
}
if(strlen($data)>10){
$hora = substr($data,$caracteres);
$data_arrumada = $data_arrumada." ".$hora;
}
return $data_arrumada;
}
function date2mysql($data){
/*
Formato da data:
21/03/2018 14:47:25 -> retorna -> 2018-03-21 14:47:25
21/03/2018 14:47 -> retorna -> 2018-03-21 14:47
21/03/2018 -> retorna -> 2018-03-21
*/
$data = trim($data);
$dia = substr($data,0,2);
$mes = substr($data,3,2);
$ano = substr($data,6,4);
$data_arrumada = "$ano-$mes-$dia";
## Para Formato com hora completa HH:mm:ss
if(strlen($data)==19){
$caracteres = -8;
}
## Para Formato com hora parcial HH:mm
if(strlen($data)==16){
$caracteres = -5;
}
if(strlen($data)>10){
$hora = substr($data,$caracteres);
$data_arrumada = $data_arrumada." ".$hora;
}
return $data_arrumada;
}
## COMO USAR
echo "Data Formatada para gravar MySql: ".date2mysql("23/03/2018 13:13:00");
/*
Resultado
Data Formatada para gravar MySql: 2018-23-03 13:13:00
*/
echo "Data Formatada de Mysql para padrão Brasileiro: ".mysql2date("2018-23-03 13:13:00");
/* Resultado
Data Formatada de Mysql para padrão Brasileiro: 23/03/2018 13:13:00
*/
?>
Função para remover acentuação de uma string
Função para gerar números aleatórios
Data em extenso para Cabeçalho
Saber se acesso a aplicação web é feito pela rede interna ou externa
Como rodar o Folding@home no Linux
Criando um painel de controle (Dashboard) para seu servidor com o Homepage
O Abismo entre o Código e o Chão: Saltos Tecnológicos e a Exclusão Estrutural no Brasil
Instalar e Configurar a santíssima trindade (PAP) no Void Linux
NixOS + NVIDIA antiga: como sobreviver ao driver 595 (GTX 750 Ti / Maxwell)
Conhecendo o tmux: Multiplexador de Terminal
Acessando página do Syncthing fora da máquina local
[Resolvido] Meu monitor suporta 100fps. Por que o máximo é 60fps nos jogos?
Qual melhor distro para esse notebook? (1)
Ativação de som 5.1 e nvidia (0)
Entrevista com Greg Kroah-Hartman (2)









