• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Romanovs

Função - Formatar data

2 mensagens neste tópico

Boas,

Tenho uma função que serve para formatar a data que é retirada directamente da base de dados em Timestamp (yyyy-mm-dd hh:mm:ss) para p formato que quero, por exemplo [dia] de [mes_ext] de [ano]

O problema é que os campos constituídos por letras como o nome do mês [mes_ext] e o nome do dia da semana [dia_sem] não aparecem fica por exemplo, 4 de  de 2008

a função é a format_data a outra só está  para nao se perderem no significado

function obter_ling($var_nome) {
                      global $ling;
                      $explode = explode(',', $var_nome);
                      $num = count($explode);
                      for ($i=0; $i<=$num; $i++) {
                          $sling = mysql_query("SELECT texto FROM ".BD_PREFIXO."linguas WHERE ling='".$_SESSION['lingua']."' AND varnome='".$explode[$i]."' LIMIT 1");
                             $lingf = mysql_fetch_array($sling);
                             $ling[$i] = $lingf['texto'];
                      }
}

function format_data($dbhora, $formato) {
         global $data;
         obter_ling('janeiro,fevereiro,marco,abril,maio,junho,julho,agosto,setembro,novembro,dezembro,domingo,segunda,terca,quarta,quinta,sexta,sabado');

         $mes['01'] = $ling[0];
         $mes['02'] = $ling[1];
         $mes['03'] = $ling[2];
         $mes['04'] = $ling[3];
         $mes['05'] = $ling[4];
         $mes['06'] = $ling[5];
         $mes['07'] = $ling[6];
         $mes['08'] = $ling[7];
         $mes['09'] = $ling[8];
         $mes['10'] = $ling[9];
         $mes['11'] = $ling[10];
         $mes['12'] = $ling[11];
         $dia_semana['0'] = $ling[12];
         $dia_semana['1'] = $ling[13];
         $dia_semana['2'] = $ling[14];
         $dia_semana['3'] = $ling[15];
         $dia_semana['4'] = $ling[16];
         $dia_semana['5'] = $ling[17];
         $dia_semana['6'] = $ling[18];
         #2008-07-02 23:04:24
         $array = explode(' ',$dbhora);

         $adata = explode('-',$array[0]);
         $ahora = explode(':',$array[1]);
         
         $dia = $adata[2];
         $mes_a = $adata[1];
         $mes_extenso = $mes[$adata[1]];
         $ano = $adata[0];
#isto ta a fazer um novo timestamp porque me esqueci que tinha isto ja metido em timestamp
         $time = mktime($ahora[0],$ahora[1],$ahora[2],$adata[1],$adata[2],$adata[0]);
         $dia_semana1 = $dia_semana[date('w', $time)];
         $sufixo = date('S', $time);

         $data = $formato;
         $data = str_replace('[dia]', $dia, $data);
         $data = str_replace('[mes_num]', $mes_a, $data);
         $data = str_replace('[dia_sem]', $dia_semana1, $data);
         $data = str_replace('[sufixo]', $sufixo, $data);
         $data = str_replace('[ano]', $ano, $data);
         $data = str_replace('[mes_ext]', $mes_extenso, $data);
         $data = str_replace('[segundo]', $ahora[2], $data);
         $data = str_replace('[minuto]', $ahora[1], $data);
         $data = str_replace('[hora]', $ahora[0], $data);
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dentro da função também terás que ter Global $ling e têm que ser inicializada fora.

Mas para quê que queres isso? Tens funções já feitas que te fazem isso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora