Converter datas no php

Geralmente quando inserimos uma data no banco de dados, ele precisa estar no formato internacional “AAAA-MM-DD”.
Aí a pessoa pensa, mas e agora? vou ter que usar esse modelo nos formulários também? Não.
Podemos desenvolver uma função que converte a data no formato nacional(DD/MM/AAAA) para o formato internacional.

Vamos ao exemplo, criamos um arquivo chamado datas.php:

function dataSQL($data)
{
	$separaData = explode("/", $data);
	$dataSQL =  $separaData[0] . "-" .
	            $separaData[1] . "-" .
		        $separaData[2];

	return $dataSQL;
}

Repare que a função recebe como parâmetro uma variável que contém a data.
Na linha 3, a variável $separaData recebe a função explode. Onde nela contém dois parâmetros, respectivamente o separador e a data em si.
Na linha 4, criamos uma nova variável chamada $dataSQL que recebe um array(vetor) de dados, onde cada índice é uma parte da data. Por exemplo o índice zero terá o valor do ano, o índice 1 terá o valor do mês e o índice 2 terá o valor do dia. Eles todos são concatenados com o separador “-“(hífen)
Na linha 8, retornamos a variável que contém a data convertida.
Teste simples para ver o funcionamento:

<?php
   include 'datas.php';
   echo dataSQL("13/11/2014");

Resultado seria: 2014-11-13

Ok, mas e agora como usar em uma aplicação, formulário?

Para usar é bem mais simples ainda.
Vamos supor que temos um formulário(usando a data no formato nacional 13/11/2014):

<form method="post" action="processaDados.php">
   <input type="text" name="data"/>
   <input type="submit" value="Cadastrar"/>
</form>

O script php:

<?php
   //inclui o arquivo que contém a função de converter a data
   include 'datas.php';

   //recebe o dado do formulário
   $dataFormulario = $_POST["data"];

   //convertemos a data para o formato internacional antes de enviar ao BD
   $dataConvertida = dataSQL($dataFormulario);

   //inserimos no BD a data convertida
   $insere = mysql_query("INSERT INTO tabela(data) VALUES($dataConvertida)");

Legal, agora que convertemos e inserimos no BD.. como posso trazer a data convertida do BD, para o formato nacional.. para poder exibir em tela?
Bom nesse caso podemos criar uma nova função dentro do arquivo datas.php igual a anterior.. mas com algumas pequenas mudanças:

function dataNacional($data)
{
	$separaData = explode("-", $data);
	$dataNacional = $separaData[2] . "/" .
			        $separaData[1] . "/" .
			        $separaData[0]; 

	return $dataNacional;
}

As principais mudanças foram na linha 3 onde o separador agora é o hífen(-) e as linhas 4, 5 e 6 a ordem dos índices.. e o separador que agora é uma barra.
Em um exemplo simples:

<?php
   include 'datas.php';
   echo dataNacional("2014-11-13");

Resultado seria: 13/11/2014

Bem é isso pessoal. Espero que seja tão útil a vocês como foi para mim.
Até a próxima.

Publicado em PHP

Deixe um comentário

Crie um site como este com o WordPress.com
Comece agora