Hoje vou postar uma função que fiz a algum tempo e que na maioria das vezes me auxilia em projetos que esteja desenvolvendo. Trata-se de uma função responsável por converter datas em formatos convencionais para formatos aceitos pelo banco de dados e vice-versa.
Como todos sabem, nós brasileiros trabalhamos com datas em nossos dia-a-dia no formato dia/mes/ano (Ex: 31/12/2011). Porém os bancos de dados (como não são desenvolvidos no Brasil) trabalham com outros formatos, geralmente no esquema ano-mes-dia (Ex: 2011-12-31).
Então como fazer para que o usuário preencha a data como está acostumado, mas o sistema salve no banco de dados no formato que ele aceite?
É aí que entra a função. Vamos a ela e depois explico.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?php function converteData($data){ if (strstr($data, "/")){//verifica se tem a barra / $d = explode ("/", $data);//tira a barra $rstData = "$d[2]-$d[1]-$d[0]";//separa as datas $d[2] = ano $d[1] = mes etc... return $rstData; } else if(strstr($data, "-")){ $data = substr($data, 0, 10); $d = explode ("-", $data); $rstData = "$d[2]/$d[1]/$d[0]"; return $rstData; } else{ return ''; } } ?> |
A função deve receber como parâmetro uma data (não importa o formato). Aí ela verifica se a data recebida possui barras. Se sim, ele retira as barras com a função explode e joga o dia, mês e ano dentro de um array. Depois gera uma nova string, agora no formato com traços e ordenados por ano, mês e dia.
Caso a data recebida não tenha as barras, ele faz uma verificação pra ver se ela tem traços. Em caso afirmativo, ele faz o processo inverso, ou seja, retira os traços, joga as informações dentro de um array e depois gera a nova data com barras e na ordem dia, mês e ano.
Se a data passada no parâmetro não tiver nem barras e nem traços, a função retorna um valor vazio.
Veja 2 exemplos de utilização da função:
1 2 3 4 5 6 7 8 9 10 | <?php //Exemplo 1 $data_br = "03/06/2011"; $data_banco = converteData($data_br); echo $data_banco; //vai imprimir 2011-06-03 //Exemplo 2 $data1 = converteData("2011-12-31"); echo $data1; //vai imprimir 31/12/2011 ?> |
E é isso aí. Função simples mas que pode ajudar bastante.
Abs.
Siga-me no twitter: @rafaelwendel
Show de bola! E o melhor de tudo usando apenas uma funçaõ para os dois formatos de data, estava procurando isso e confesso q esta é a melhor opção, parabens!
Parabéns, consegui utilizar no que eu precisava
Cara, impressionante que quando uma coisa é bem feita, dura por muito e muito tempo. A primeira vez que usei esse código foi em 2011, depois precisei em outros projetos e sempre utilizava a mesma função. Hoje, sem acesso ao meu HD, precisei de novo e o google me trouxe para o seu site novamente hahaha. Good Job!
Show de bola!. obrigado
Consigo usar essa função para poder editar a data em um formulario?