converter formatos de data em PHP – (Série funções úteis PHP)

funcao_databr
Olá caros leitores, mais uma noite depois de um dia agitado, são 23:31hs, o olho fechando de sono depois de alguns dias com menos de 5 horas de sono, mas não resisti à “tentação” de vir aqui escrever mais um dica da nossa série Funções úteis PHP.

Muito bem, conforme prometido no artigo anterior, hoje vamos montar uma funçãozinha que facilitará aquele trabalho simples mas chato de estar convertendo a data do formato americano para brasileiro e vice-versa.

A questão é que quando trabalhamos com banco de dados, a data vem no formato yyyy-mm-dd (Ano, mês e dia), mas nós brasileiros estamos acostumados a ler a data no formato dd/mm/aaaa.

A verdade é que existem várias formas de se fazer a conversão, porém, meu objetivo aqui é ser direto e mostrar [pelo menos para mim] a forma mais prática, afinal, o que queremos é que o negócio funcione e que possamos produzir rapidamente, não é? Pois bem, então vamos lá.

Usando o explode() – Não digo que é a mais correta ou apropriada, mas funciona bem e muitos usam. Consiste em “explodirmos” os “-” hífens da string data e remontarmos os pedaços com uma barra “/”. Que isso Jackson, que violência é essa? Calma! vamos fazer passo-a-passo e tudo ficará mais claro.

3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
//VARIAVEL COM A DATA NO FORMATO AMERICANO
$data_americano = "2009-04-29";
 
//AGORA VAMOS EXPLODIR ELA PELOS HIFENS E SERÁ CRIADO UM ARRAY COM AS PARTES
$partes_da_data = explode('-',$data_americano);
 
//AGORA REMONTAMOS A DATA NO FORMATO BRASILEIRO, OU SEJA,
//INVERTENDO AS POSICOES E COLOCANDO AS BARRAS
$data_brasileiro = $partes_da_data[2].'/'.$partes_da_data[1].'/'.$partes_da_data[0];
 
//UFA! PRONTINHO, AGORA TEMOS A DATA NO BOM E VELHO FORMATO BRASILEIRO
echo $data_brasileiro;
?>

Tá Jackson, mas a idéia não era apresentar uma forma simples? Tenho que fazer toda essa “coisarada” para simplesmente mudar o formato da data?

Meu caro! Como somos amigos, vou agora apresentar o “Pulo do Gato”.

O negócio é o seguinte, crie uma Função que fará isso sempre que precisar, bastará apenas você escrever assim no PHP:

databr($data_americano);

Fácil né! Mas como faço a função? Ok, vamos explicar.

Lembra do tal arquivo “funcoesgerais.php” que criamos no artigo anterior? Então, dentro daquele arquivo, você cola esse trecho aí embaixo, daí adicione aquele arquivos nas páginas que usará a função, através do comando include(‘funcoesgerais.php’);

3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Formata data aaaa-mm-dd para dd/mm/aaaa
function databr($datasql) {
	if (!empty($datasql)){
	$p_dt = explode('-',$datasql);
	$data_br = $p_dt[2].'/'.$p_dt[1].'/'.$p_dt[0];
	return print $data_br;
	}
}
 
// Formata data dd/mm/aaaa para aaaa-mm-dd
function datasql($databr) {
	if (!empty($databr)){
	$p_dt = explode('/',$databr);
	$data_sql = $p_dt[2].'-'.$p_dt[1].'-'.$p_dt[0];
	return $data_sql;
	}
}

Bom gente, acho que deu para entender a moral da história né? Mas de qualquer forma, se houver alguma dúvida, o NETeVida ta aí, estão vendo esse formulariozinho abaixo? Não é para enfeite, é para perguntarem, darem opiniões e participarem.

Ah, já estava me esquecendo, para facilitar a vida de vocês, vou deixar os arquivos para download. Mas colaborem com os comentários e participação, afinal, o que nos incentiva à escrever é ter gente para ler, então divulgue entre os colegas, blz?

Arquivos para download

Um grande abraço e até a próxima.

Related Posts Plugin for WordPress, Blogger...

You can leave a response, or trackback from your own site.

9 Responses to “converter formatos de data em PHP – (Série funções úteis PHP)”

  1. Guilherme Ferrolli disse:

    Olá queridos.. Somente para que fique claro (antecipadamente), ja li e re-li posts aonde pessoas são advertidas a não responderem porque são antigos. Acontece que os posts servem para todos que lêem e não somente para o que lançou a dúvida primária.

    Para converter uma data pré-definida que vem de um campo DATE MySql em formato ISO yyyy-mm-dd é simples:
    date(“d/m/Y,strtotime($data_do_banco));

    simples assim.
    Abraços

  2. Marcos disse:

    desculpa.. ficou incompleto o comentário acima… corrigindo:

    “mas nada que o não resolva”…

    abraços

  3. Marcos disse:

    Olá…passando por aqui… não pude de deixar de colocar minha participação… outro meio de converter data formato americano em brasileiro, pode ser assim tb:

    $data_americano = “2009-04-29″;
    list($ano,$mes,$dia) = explode(“-”,$data_americano);
    echo $dia.”-”.$mes.”-”.$ano;

    Vale ressaltar que o PHP 6 o register_globals será exinto, logo uma boa saída é substituir o $_POST[] por $_REQUEST[] e a solução acima tb pode ser usada para retornos de banco de dados.

    O exemplo acima, como os exemplos do nosso colega Jackson é para retornos de formulários ou banco de dados, pois podemos usar o date(“d/m/Y”) ou date(“d-m-Y”) como nossos colegas acima mencionaram.

    Outro exemplo é colocar no formato amigável (14 de julho de 2010) e a solução seria essa:

    $mes = date(“m”);

    switch($mes) {
    case “01″ : $mes = “janeiro”; break;
    case “02″ : $mes = “fevereiro”; break;
    case “03″ : $mes = “março”; break;
    case “04″ : $mes = “abril”; break;
    case “05″ : $mes = “maio”; break;
    case “06″ : $mes = “junho”; break;
    case “07″ : $mes = “julho”; break;
    case “08″ : $mes = “agosto”; break;
    case “09″ : $mes = “setembro”; break;
    case “10″ : $mes = “outubro”; break;
    case “11″ : $mes = “novembro”; break;
    case “12″ : $mes = “dezembro”; break;
    }

    echo date(“d”).” de “.$mes.” de “.date(“Y”);

    Vale ressaltar que PHP roda no servidor, então se o seu servidor ficar no Japão, essa data vai partir de lá… uma solução prática seria colocar em javascript, pois roda no browser e pega do relógio do usuário… tem pessoas que gostam desabilitar o javascript no browser… mas nada que o não resolva…

    Abraços

  4. Jackson Jorge disse:

    Guilherme… Realmente é simples assim, mas quando queremos a data atual, mas o que estou tratando no post é quando pegamos uma outra data que vem de um banco de dados por exemplo.

    Obrigado pela participação.

  5. Guilherme Ferrolli disse:

    também pode usar este simples code aqui,
    claro sempre colocando date(“d/m/Y”).
    o separador da data não importa.
    mas isto aqui em baixo serve para poder usar o nome do mês por extenso ou o dia ou o ano, ou até os tres.

    date_default_timezone_set(“Brazil/East”);

  6. Guilherme Ferrolli disse:

    Amigo, perdão,
    mas a coisa é tão simples e voce complicou tanto.
    cara
    $data = date(“d/m/Y”);
    echo $data;
    pronto,
    a data vai sair 20/05/2010 ->dia vinte de Maio de 2010.
    abraço

  7. Agatha Bandeira disse:

    Oi, achei bem prático realmente.

    Mas sou iniciante e tenho a mesma dúvida do nosso amigo Charles…

    “Boa tarde,

    muito bom amigo, sua dica, mas….. (sempre tem um mas ^^)

    sou iniciante, como eu uso essas funções para datas que o usuario insere no textbox?

    tipo: $data = $_POST[txt_data];

    isso e que eu não to sabendo fazer eheheh”

    Bom, se puder me ajudar..
    Desde já agradeço.

  8. Charles disse:

    Boa tarde,

    muito bom amigo, sua dica, mas….. (sempre tem um mas ^^)

    sou iniciante, como eu uso essas funções para datas que o usuario insere no textbox?

    tipo: $data = $_POST[txt_data];

    isso e que eu não to sabendo fazer eheheh

  9. Douglas disse:

    pode tambem transformar datas americanas em brasileiras no proprio MYSQL
    so usar

    select campos1,campo2,date_format(datanasc, ‘%d/%m/%Y’) from sua_tabela

    e ja vai formatar tudo no formato Brasileiro, bem facil ne?
    abraços

Leave a Reply

Spam Protection by WP-SpamFree

Get Cheap Cell Phones and Wireless Deals. | Thanks to Best Savings Accounts, CD Rates and UK Loan