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: 1.945 ]

Homepage: http://www.titan.inf.br

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.

  



Esconder código-fonte

<?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

*/
?>

Scripts recomendados

Saber se acesso a aplicação web é feito pela rede interna ou externa

Cadcomp 1.0

Formatando data de yyyy/mm/dd para dd/mm/yyyy

Banners rotativos simples

Função para remover acentuação de uma string


  

Comentários
[1] Comentário enviado por Stolato em 29/03/2018 - 13:35h

Tem uma forma mais simples de formatar a data e exibir na tela basta usar o próprio date

Ex: date("d/m/Y H:i:s",strtotime($data));

[2] Comentário enviado por iaferro em 31/03/2018 - 01:26h

Amigo tem a função DATE_FORMAT() do próprio MySQL muito mais fácil.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts