Transformar datas para gravar no banco de dados (MySQL, Postgres e outros)
É 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.
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.
Descrição
É 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.
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
*/
?>
Ex: date("d/m/Y H:i:s",strtotime($data));