Duvida em criar function retornaDataMes($data)

31/08/2012

0

PHP

Pessoal!
Crei uma classe chamada conteudoBLL, nesta classe eu quero criar método / função que retorne por extenso o mês de acordo com o valor que minha data recebe...
Bom, vamos ao meu código pronto:
class conteudoBLL{
		function retornaDataMes($data) {
			$data = explode("/",$data);
			switch($data[1]) {
				case "1":{$data[1]="Janeiro";break;}
				case "2":{$data[1]="Fevereiro";break;}
				case "3":{$data[1]="Março";break;}
				case "4":{$data[1]="Abril";break;}
				case "5":{$data[1]="Maio";break;}
				case "6":{$data[1]="Junho";break;}
				case "7":{$data[1]="Julho";break;}
				case "8":{$data[1]="Agosto";break;}
				case "9":{$data[1]="Setembro";break;}
				case "10":{$data[1]="Outubro";break;}
				case "11":{$data[1]="Novembro";break;}
				case "12":{$data[1]="Dezembro";break;}
			}
		
		}
	
	}
			
$objConteudoBLL = new conteudoBLL();	


PS.: sou novo em php, tenho quase certeza que há algo de errado ai encima!


em uma página que eu queira usar o método ou função acima, eu estou escrevendo isto:
							require_once "bll/conteudobll.php";
							echo'tem que ser aqui porra, que merda esse codigo nao funcionar arrr' . $data[1] = $objConteudoBLL->retornaDataMes($row['data_noticia']);   



Bom, como podem ver, eu devo está errando em alguma coisa...

o lance é que se eu cologo a função explode e loop while dentro da página que eu quero usar, tudo funciona direitinho...

Desde já agradeço a ajuda de todos!
Samuel

Samuel

Responder

Posts

31/08/2012

Samuel

Pois é pessoal... fazendo umas pesquisas aqui no google, eu achei este link que resolveu problema! porém sem trabalhar com switch case.. bom se alguém souber como fazer o mesmo que o link abaixo faz só que desta vez com switch case poste aeh! e vamos aumentar nosso grau de conhecimento!!!! rsrsrsrrsrs

function data_extenso ($data = false)
{
	if ($data)
	{
		$mes = date('m', strtotime($data));
	}
	else
	{
		$mes = date('m');
		$data = date('Y-m-d');
	}
	$meses = 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'
	);
	$dias = array
	(
		0 => 'Domingo',
		1 => 'Segunda-feira',
		2 => 'Terça-feira',
		3 => 'Quarta-feira',
		4 => 'Quinta-feira',
		5 => 'Sexta-feira',
		6 => 'Sábado'
	);
	return $dias[date('w', strtotime($data))] . ', ' . date('d', strtotime($data)) . ' de ' . $meses[$mes] . ' de ' . date('Y', strtotime($data));
}


segue link:
[url]http://www.zatecus.com/blog-php-exibindo-uma-data-por-extenso-post.html[/url]

Desde já agradeço a todos!!

Best Regards,
Samuel Diogo
Responder

02/10/2012

Bruno Betioli

Só tem uma coisa faltando em sua classe

class conteudoBLL{
function retornaDataMes($data) {
$data = explode("/",$data);
switch($data[1]) {
case "1":{$data[1]="Janeiro";break;}
case "2":{$data[1]="Fevereiro";break;}
case "3":{$data[1]="Março";break;}
case "4":{$data[1]="Abril";break;}
case "5":{$data[1]="Maio";break;}
case "6":{$data[1]="Junho";break;}
case "7":{$data[1]="Julho";break;}
case "8":{$data[1]="Agosto";break;}
case "9":{$data[1]="Setembro";break;}
case "10":{$data[1]="Outubro";break;}
case "11":{$data[1]="Novembro";break;}
case "12":{$data[1]="Dezembro";break;}
}
return $data[1];
}

}


Note que coloquei um return na função logo depois do switch.

E no código onde vc vai mostrar o resultado:

require_once "bll/conteudobll.php";
$objConteudoBLL = new conteudoBLL();
echo'tem que ser aqui porra, que merda esse codigo nao funcionar arrr'.$objConteudoBLL->retornaDataMes($row['data_noticia']);


Vê aí se deu certo. Vou ver um jeito de usar o segundo com switch.
Responder

02/10/2012

Bruno Betioli

adicione este bloco de código a sua classe:

function data_extenso ($data = false)
{
if ($data)
{
$dia = date('w', strtotime($data));
$data = explode("-", $data);
}
else
{
$dia = date('w');
$data = date('Y-m-d');
$data = explode("-", $data);
}
switch($data[1]) {
case "1":{$data[1]="Janeiro";break;}
case "2":{$data[1]="Fevereiro";break;}
case "3":{$data[1]="Março";break;}
case "4":{$data[1]="Abril";break;}
case "5":{$data[1]="Maio";break;}
case "6":{$data[1]="Junho";break;}
case "7":{$data[1]="Julho";break;}
case "8":{$data[1]="Agosto";break;}
case "9":{$data[1]="Setembro";break;}
case "10":{$data[1]="Outubro";break;}
case "11":{$data[1]="Novembro";break;}
case "12":{$data[1]="Dezembro";break;}
}

switch($dia){
case "0": {$dia = 'Domingo'; break;}
case "1": {$dia = 'Segunda-feira'; break;}
case "2": {$dia = 'Terça-feira'; break;}
case "3": {$dia = 'Quarta-feira'; break;}
case "4": {$dia = 'Quinta-feira'; break;}
case "5": {$dia = 'Sexta-feira'; break;}
case "6": {$dia = 'Sábado'; break;}
}
return $dia . ', ' . $data[2] . ' de ' . $data[1] . ' de ' . $data[0];
}


e para mostrar o resultado, seguindo aquele seu exemplo rsrsrs:

require_once "bll/conteudobll.php";
$objConteudoBLL = new conteudoBLL();
echo'tem que ser aqui porra, que merda esse codigo nao funcionar arrr '.$objConteudoBLL->data_extenso($row['data_noticia']);


O caso é que, se a data estiver salva no banco com o formato dd/mm/yyyy, você terá que alterar para o formato yyyy-mm-dd, que é o padrao que a função strtotime do php reconhece. Tive esse problema no banco, para alterar, tive que fazer um script para capturar todas as datas do banco, transformá-las para o formato yyyy-mm-dd, mostrá-las em um input text e corrigir manualmente as poucas datas que ainda ficaram erradas. Criei um loop para salvar todas com o novo formato e, só então, alterei o campo da data no banco de varchar para date. Coisa de quem está iniciando rsrsrs. Qualquer coisa dá um grito.
Responder

02/10/2012

Samuel

Boa Bruno!!
Testei aqui e funfou que uma beleza! obrigado por compartilhar!

sds,
Samuel Diogo
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar