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.276 ]
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
*/
?>
Criando um menu de paginação de resultados com algumas funcionalidades
Cinnamon seria a aposta acertada frente às outras interfaces gráficas mais populares?
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Vou destruir sua infância:) (8)
Interface gráfica com problema (2)
Instalar Linux em notebook Sony Vaio VPCEG13EB (13)









