Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dexter Morgan

[Resolvido] data por extenso em agenda PHP e Mysql

Recommended Posts

seguinte pessoal, tenho uma tabela de cadastro de eventos, funciona perfeitamente, ai escolho a data e faz o cadastro na hora de exibir utilizo esse script:

 

<?php

function escreveData($data){
$nova = explode(" ", $data);
$nova = explode("-", $nova[0]);
$vardia = $nova[2];
$varmes = $nova[1];
$varano = $nova[0];
$convertedia = date ("w", mktime(0, 0, 0, $varmes, $vardia, $varano));
$diasemana = array("Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado");
$mes = array('01' => "Janeiro", '02' => "Fevereiro", '03' => "Março", '04' => "Abril", '05' => "Maio", '06' => "Junho", '07' => "Julho", '08' => "Agosto", '09' => "Setembro", '10' => "Outubro", '11' => "Novembro", '12' => "Dezembro");
return $vardia  . " de " . $mes[$varmes] . " de " . $varano ."";
}

?>

 

ele retorna assim:

 

Água Doce Cachaçaria

17 de Agosto de 2012

Gui Bitencourt

 

mas quero assim:

 

Água Doce Cachaçaria

17 de Agosto de 2012 / Sexta-Feira

Gui Bitencourt

 

ai tentei dessa forma:

 

<?php

function escreveData($data){
$nova = explode(" ", $data);
$nova = explode("-", $nova[0]);
$vardia = $nova[2];
$varmes = $nova[1];
$varano = $nova[0];
$convertedia = date ("w", mktime(0, 0, 0, $varmes, $vardia, $varano));
$diasemana = array("Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado");
$mes = array('01' => "Janeiro", '02' => "Fevereiro", '03' => "Março", '04' => "Abril", '05' => "Maio", '06' => "Junho", '07' => "Julho", '08' => "Agosto", '09' => "Setembro", '10' => "Outubro", '11' => "Novembro", '12' => "Dezembro");
return $vardia  . " de " . $mes[$varmes] . " de " . $varano . " / " . $diasemana[$vardia]."";
}

?>

 

mas nao funcionou, resumindo além do numero quero o nome do dia no final ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

DateTime, sprintf

/**
* Escreve uma data por extenso
* 
* @param DateTime $date
* @return string
* @author Hugo Ferreira da Silva
*/
function escreveData(DateTime $date){
$meses = explode(',','janeiro,fevereiro,março,abril,maio,junho,julho,agosto,setembro,outubro,novembro,dezembro');
$dias  = explode(',','domingo,segunda,terça,quarta,quinta,sexta,sábado');
$str   = sprintf('%s, %s de %s de %s', 
	$dias[$date->format('w')], 
	$date->format('d'), 
	$meses[$date->format('m')-1], 
	$date->format('Y')
);

return $str;
}

 

Testando:

 

echo escreveData(new DateTime());

// PHP 5.3 +
echo escreveData(DateTime::createFromFormat('d/m/Y', '06/01/1978'));

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

de erro Fatal error: Call to undefined method DateTime::createFromFormat()

 

eu uso para exibir a data que foi pro banco assim:

 

print escreveData("$data");

 

mas testei o código acima sozinho tbm deu erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a versão do PHP que você está usando?

 

Você leu que a DateTime::createFromFormat funciona somente a partir do PHP 5.3 ou superior?

Coloquei esta informação no meu post anterior.

 

Para usar com PHP 5.2 ou superior:

 

echo escreveData(new DateTime('2012-01-01'));

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque essa linha:

return $vardia  . " de " . $mes[$varmes] . " de " . $varano ."";

 

 

Por essa:

return $vardia  . " de " . $mes[$varmes] . " de " . $varano . " / " . $diasemana[$convertedia];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você realmente tentou como mostrei em meu post dessa vez?

Você provavelmente fez isso:

 

echo escreveData('2012-01-01')

;

 

e o que eu mostrei foi isso:

 

echo escreveData(new DateTime('2012-01-01'));

 

Veja que é a instancia de uma classe que é passada como argumento, e não uma string.

 

@braços e fique com Deus!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque essa linha:

return $vardia  . " de " . $mes[$varmes] . " de " . $varano ."";

 

 

Por essa:

return $vardia  . " de " . $mes[$varmes] . " de " . $varano . " / " . $diasemana[$convertedia];

 

ele nao retornou nada ficou vazio onde ia mostrar o nome do dia, mas no dia de hoje (Quinta-Feira) mostrou "Array"

 

hufersil fiz como você disse, mas o erro persiste...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Código

<?php

function escreveData($data){
$nova = explode(" ", $data);
$nova = explode("-", $nova[0]);
$vardia = $nova[2];
$varmes = $nova[1];
$varano = $nova[0];
$convertedia = date ("w", mktime(0, 0, 0, $varmes, $vardia, $varano));
$diasemana = array("Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado");
$mes = array('01' => "Janeiro", '02' => "Fevereiro", '03' => "Março", '04' => "Abril", '05' => "Maio", '06' => "Junho", '07' => "Julho", '08' => "Agosto", '09' => "Setembro", '10' => "Outubro", '11' => "Novembro", '12' => "Dezembro");
return $vardia  . " de " . $mes[$varmes] . " de " . $varano . " / " . $diasemana[$convertedia];
}

echo escreveData("2012-08-16");

 

Saída:

16 de Agosto de 2012 / Quinta-Feira

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, posta o que você está tentando fazer.

Porque se você fez mesmo, CTRL + C > CTRL + V do que mostrei, não tem como dar errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eita resolvi assim:

 

tava:

return $vardia  . " de " . $mes[$varmes] . " de " . $varano . " / " . $diasemana[$convertedia]."";

 

ficou:

return $vardia  . " de " . $mes[$varmes] . " de " . $varano . " / " . $diasemana[$convertedia];

 

tirei o ."" rsrsrs vlw galera :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.