Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Dúvidas em como transformas 2008-03-02 para Domingo .


Rubiz Gardini

Pergunta

Olá gente, td bem?

Bom, to com uma dificuldade com manipulação de datas;

Preciso gravar no banco a data do jeito que o cliente quer; até aí consigo gravar. Sai aquele velho formato estranho pra nós 2008-03-02 completamente invertido...

Com isso, eu precisaria conseguir formar algo como Domingo, 02 de março de 2008...

Procurei no site do php, acho que não muito feliz nas minhas buscas por funções de data...

Alguém poderia dar uma mãozinha?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Só ressaltando que você vai ter que transformar a data em timestamp antes... tipo...

$data = strtotime('2007-09-09');

$data_nova = date('l dS of F Y h:i:s A',$data); //A primeira parte eu copiei direto do manual...

E que talvez você vá ter que utilizar o setlocale, pois dependendo do servidor as informações serão mostradas em inglês...

Link para o comentário
Compartilhar em outros sites

  • 0

Ele informa baseado na região que você passar.... assim:

setlocale ('LC_ALL', 'pt-br','ptb','portuguese','portuguese-brazil');

Com isso você informa que dados como datas, informações monetárias e etc, devem seguir o padrão brasileiro, mas essa função ainda é meio falha, acho que só é confiável pra mostrar as datas na língua correta...

Link para o comentário
Compartilhar em outros sites

  • 0

Olá ESerra, consegui um resultado satisfatório, mas sempre gosto de pedir opinião sobre o código para pessoas experientes para ver se não há uma forma mais resumida talvez, que consuma menos processamento.

Este é o código que gera corretamente a data:

<?
$data = '2007-09-09';
// Exclui essa linha do seu código acima pois não consegui setá-la para locale 'ptb' que seria português brasileiro, e acabei usando outras coisas
//$data_nova = date('l, dS F Y',$data); //A primeira parte eu copiei direto do manual...

$day = explode("-", $data); $day = $day[2];
$month = explode("-", $data); $month = $month[1];
$year = explode("-", $data); $year = $year[0];

setlocale (LC_ALL, 'ptb');

/* Mostra: domingo, 09 de setembro 2007 */
echo strftime ("%A, %d de %B %Y", mktime (0, 0, 0, $month, $day, $year));
?>

Editado por Rubiz Gardini
Link para o comentário
Compartilhar em outros sites

  • 0

Bem lembrando, setlocale não funciona com date...

Você pode explodir só uma vez e pegar tudo...

<?
$data = '2007-09-09';

$data_exp = explode("-", $data);

setlocale (LC_ALL, 'ptb');

/* Mostra: domingo, 09 de setembro 2007 */
echo strftime ("%A, %d de %B %Y", mktime (0, 0, 0, $data_exp[1], $data_exp[2], $data_exp[0]));
?>

Quanto ao setlocale, é conveniente colocar mais opções do que apenas 'ptb', pois dependendo do SO, ele pode não reconhecer ptb e reconhecer pt-br, ou não reconhecer nenhum deles e reconhecer portuguese, esse "problema" é mais comum no Linux (devido a infinidades de distros)

Link para o comentário
Compartilhar em outros sites

  • 0

cara...

você pode fazer assim q fica mais facil....

select year(campoDaData) as ano, month(campoDaData) as mes,day(campoDaData) as dia from suaTabela where suas condicoes;

while($linha = ...)

$dia = $linha['dia];

if($linha['mes'] == 01) $mes = "janeiro";

//fazer pra todos os meses;

$ano = $linha['ano'];

echo $dia." ".$mes." ".$ano;

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...