Ir ao conteúdo
  • Cadastre-se
FabianoS

Como configurar o wamp para mostrar Mês em Pt-br? DATA - PHP

Recommended Posts

Estou inserindo a data no banco de dados , usando datatime e não na hora da consulta ele me mostra o mês em inglês, como faço para configurar certo o wamp.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@FabianoS

 

Não sei se entendi... mas o banco de dados sempre usa o campo do tipo DATETIME no formato inglês  AAAA-MM-DD H:M:S

o datetime traz a hora, minuto e segundo junto.. e campos do tipo DATE  traz a pena a data  AAAA-MM-DD

 

O que você pode fazer é criar uma função em php  que converte esta data e hora  no formato brasileiro.

 

Por exemplo se você está utilizando o campo do tipo DATE .. podes criar uma função simples assim:

function formatoNacional($data){    $partes = explode("-",$data);	return $partes[2] ."/". $partes[1] ."/". $partes[0];}echo formatoNacional("2015-10-16"); 

Mas você pode incrementar para aceitar o DATETIME... por exemplo:

function dataBR($data, $datetime=FALSE){	if($datetime == TRUE):	    //separa a data da hora 	    $separaHora = explode(" ",$data); 	    	    //data: $separaHora[0]; hora: $separaHora[1];	    $dataSeparada = $separaHora[0];	    $horaSeparada = $separaHora[1];			//Separa a data 	    $partesData = explode("-",$dataSeparada);	    $dataNacional = $partesData[2] ."/". $partesData[1] ."/". $partesData[0] ." ". $horaSeparada;	else:		$partes = explode("-",$data);		$dataNacional = $partes[2] ."/". $partes[1] ."/". $partes[0];	endif;		 	return $dataNacional;}echo dataBR("2015-10-16") . "<br/>";echo dataBR("2015-10-16 05:37:45", true); 

De fato estas funções funcionam.. mas o intuito é só ensinar mesmo...  você a fazer suas próprias funções.

Por exemplo crie uma função que pegue o valor de um campo DATETIME, retire a data e apresente em tela somente a hora.

 

Outro que podes fazer para treinar é:  criar uma função que receba uma data no formato nacional sem hora, transforme em formato inglês,  acrescente a hora atual e insira no banco de dados... ele deve estar no formato  

 "2015-10-16 05:37:45" no banco. é um bom exercício. Pode basear-se no meu exemplo para pegar a ideia de separar a data da hora.. ou separar o numeros da hora( H:M:S)

 

Finalizando.. não tem como e porquê mudar no wamp, xampp.. ou easyphp(recomendado é melhor do que os outros dois)

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif realmente eu preciso criar essa função ? por exemplo:

 

eu sei a função. strtotime(),  eu converti pra 00/00/0000.

 

na hora de exibir eu só omiti a hora porque queria exbir só a data e o campo e datatime.

date('d/m/Y', strtotime($data)); 

em vez de eu usar o d/m/Y . eu usei d/F/Y e ele me retornou "12/October/2015".

 

 

 

 

Finalizando.. não tem como e porquê mudar no wamp, xampp.. ou easyphp(recomendado é melhor do que os outros dois)

 

Eu vi que no wamp. a time zone esta definida para o hora e local do Estados Unidos. eu mudei pra America/Sao_Paulo.

eu precisei fazer isso pra fazer o sistema de logs. que estava inserindo no banco de dados a hora errada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@FabianoS

 

Criar.. fica a seu critério.. eu SEMPRE crio funções que me auxiliam em algo.

a função date que usou é bem válida nem quis mencionar ela por que o objetivo era incentivar você a criar funções... e futuramente classes ...

 

Enfim.. eu não sabia que o wamp estava para o estados unidos... se eu não me engano o easyphp esta para são paulo.. mas também não lembro se foi eu quem mudou.. ou se já veio assim... já que já fazem uns 2 anos que configurei.. rsrsr

Compartilhar este post


Link para o post
Compartilhar em outros sites

@FabianoS

 

Criar.. fica a seu critério.. eu SEMPRE crio funções que me auxiliam em algo.

a função date que usou é bem válida nem quis mencionar ela por que o objetivo era incentivar você a criar funções... e futuramente classes ...

 

Enfim.. eu não sabia que o wamp estava para o estados unidos... se eu não me engano o easyphp esta para são paulo.. mas também não lembro se foi eu quem mudou.. ou se já veio assim... já que já fazem uns 2 anos que configurei.. rsrsr

 

@dif, Não cara eu sei que a função ajuda muito e eu já aprendi e entendi como ela funciona por causa de você , só que mesmo o wamp estando em Pt-br e a data convertida, ele ta me retornando em inglês o mês.

 

Ai que ta não sei se é o wamp que precisa fazer a configuração ou melhor criar uma função mesmo pra acabar logo de vez.

 

 

Se eu usar essa função que você criou ele vai me retorna o mês em manuscrito ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@FabianoS

 

Não. Não vai retornar.. por que não tinha entendido até agora.. achei que estavas tendo problema em formatar a data.  por que muita gente tem esse problema de escrever as datas em formato nacional .. e na hora de inserir no banco elas não aceitam por que usa o formato internacional. achei que era isso que querias... mas não.

 

agora você esclareceu.. Provavelmente tens que setar o locale junto...  por exemplo:

setlocale( LC_ALL, 'pt_BR', 'pt_BR.iso-8859-1', 'pt_BR.utf-8', 'portuguese' );date_default_timezone_set( 'America/Sao_Paulo' );echo strftime( '%A, %d de %B de %Y', strtotime( date( 'Y-m-d' ) ) );//retornosexta, 16 de outubro de 2015

E aí tu olhando esse código... tu vê a importância de criar uma função... rsrs onde poderás utilizar sempre em pouquíssimas linhas

Contudo já existe inúmeros meios de transformar os dados por extenso... seja por função criada,  ou usar  a letra M no lugar de "m"  

 

enfim.. não creio que seja configuração do wamp. experimente o easyphp para ver se dá o mesmo problema.. 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif , valeu pela ajuda, eu vi essa função no php a "strftime()" , não consegui usar. kkkkk , valeu mesmo . agora não estou conseguindo mesmo e usar o BETWEEN com datas. 

 

Tentei do modo do w3c mais eles usam só a data e la o meu e datatime.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@FabianoS

 

Mas você realmente precisa que o campo seja datetime?  

 

 

 

 

eu vi essa função no php a "strftime()" , não consegui usar.

 

a função strftime() só funciona em conjunto com a função strtotime() e o setLocale()

 

Como mencionei nos meus exemplos.. cria a função e adapta para seu propósito.. simples assim!

 

Você tem duas opções:

 

OU altera o tipo do campo para DATE  e cria mais um campo para o horário.. no caso de uma postagem onde no final é mostrada o dia e a hora postada da notícia por exemplo..

OU mantém o campo do tipo DATETIME e cria duas funções: 

1) extrair a data do campo datetime e mostra só ela formatada...

2) extrair a hora do campo datetime e mostrar só ela.

 

Eu escolheria fazer a segunda opção.

 

 NO caso do BETWEEN, precisas fazer o range pela data e não pela hora, a não ser que queiras por exemplo fazer uma contagem regressiva como uma compra coletiva.. onde calcula-se o tempo entre duas datas  e horas.

 

Enfim...  para eu te ajudar com mais eficácia, por favor me explique exatamente o que estas tentando fazer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif , e simples , eu só quero consultar todos os registros cadastrados no mes . por exemplo

 

"Janeiro 01/01/2015 Entre 31/01/2015."

 

Não consegui realizar essa consulta usando o campo datatime.

SELECT * FROM OrdersWHERE OrderDate BETWEEN #07/04/1996# AND #07/09/1996#;

Ja que o W3C esta usando a data pura , sem a hora . nao conseguir consultar. tentei outros. do tipo.

SELECT * FROM db WHERE data BETWEEN '01-01-2015' AND '31-01-2015")

Mas não conseguir ter sucesso!

 

 

 

Mas você realmente precisa que o campo seja datetime?  

 

Eu quero ter Controle. eu posso criar um campo DATA  e um Campo Datatime se for o caso, mas quero realmente usar assim para ficar mais simples. se não tiver outro jeito é claro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@FabianoS

 

Entendi.. 

O  lance do exemplo da W3C funciona por que eles usam o campo DATE apenas como você já sabe. aí a consulta que eles fizeram funciona.

O problema é que tens um campo DATETIME.. ou seja, ele requer a data e a hora juntas. só que se colocar na consulta só a data. . sem a hora.. ele não vai funcionar.. porque o mysql espera a hora também..

Para contornar isso.. temos que tirar a  hora da data.

 

Isso pode ser feito de várias maneiras.

 

1)Diretamente na consulta usando a função str_to_date() do mysql  e formate para que mostre apenas a  data..  assim a consulta vai funcionar

 exemplo:

SELECT * FROM tabela WHERE dataHora BETWEEN str_to_date('2015-01-01','%Y-%m-%d') AND str_to_date('2015-01-31','%Y-%m-%d')

2) podes usar o sinal "maior igual " e "menor"

exemplo:

SELECT * FROM tabela WHERE dataHora >= '2015-01-01' AND dataHora < '2015-01-31'

3) usar o PHP...  cortar a hora da data  e aplicar na consulta.(aí entra aquela função que criei que pode ser modificada... )

exemplo da função que corta a hora e retorna a data:

function obtemData($data){    $dataSeparada = explode(" ",$data);	return $dataSeparada[0];}

Exemplo para cortar a data e retornar a hora:

function obtemHora($data){    $horaSeparada = explode(" ",$data);  	return $horaSeparada[1];   }

e por aí vai..

 

Outra coisa que não perguntei é:  Como você esta fazendo a consulta? diretamente no phpmyadmin ou criou uma pagina onde tem um campo para digitar a primeira data e um campo para digitar a segunda data.. e o php recebe estes valores por POST e aplica na instrução da consulta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Outra coisa que não perguntei é:  Como você esta fazendo a consulta? diretamente no phpmyadmin ou criou uma pagina onde tem um campo para digitar a primeira data e um campo para digitar a segunda data.. e o php recebe estes valores por POST e aplica na instrução da consulta?

 

Eu Criei um Select de Janeiro a Dezembro, então quando a pessoa escolhesse o mês  eu faria uma condição com if.

$mes = $_POST['meses'];if($mes == janeiro){faça a consulta e mostre os resultados.}

Compartilhar este post


Link para o post
Compartilhar em outros sites

@FabianoS

 

Nesse caso a consulta que estas fazendo não iria funcionar... por que você estaria ignorando as datas ao comparar os meses.

 

Seria mais interessante você ao invés de criar um Select,  crie um campo do tipo DATE do HTML 5.. assim você permite que a pessoa escolha duas datas e faça o select baseado nelas..

Eaí entra o lance das funções de converter a data.. por que o campo DATE no html 5  pega o calendário nativo do sistema...  então o formato é em brasileiro  17/10/2015 

aí usa-se a funçãozinha criada para inverter os valores da data para que o banco de dados aceite.

 

é por ai... minha sincera opinião.. é bobagem usar o campo DATETIME, SE não vai utilizar as horas junto na comparação... o mais indicado é o DATE mesmo... eai a hora,., você manipula separadamente em outro campo..

O que deveria ser bem simples de resolver...o cara acabou fazendo uma tempestade em copo dagua

Compartilhar este post


Link para o post
Compartilhar em outros sites

@dif estava funcionando eu não ignorei as datas tipo era mais ou menos assim.

$mes = $_POST['meses'];if($mes == janeiro){$consulta = mysqli_query($conexao,"SELECT * FROM db WHERE datatime ('01/01/2015') AND ('31/01/2015')");}

 

 

Seria mais interessante você ao invés de criar um Select,  crie um campo do tipo DATE do HTML 5.. assim você permite que a pessoa escolha duas datas e faça o select baseado nelas.

kkkkkk @dif eu tava fazendo o código depois que arrumei na tabela, criei um campo data e um datatime pra caso eu queira pegar a hora depois , ai quando tava fazendo o código eu vi que ia dar mais trabalho do que deixar o usuário pesquisar pela data, fora que se eu quiser somar o valor  ia limitar o valor só no mês. se ele quisesse na semana não teria como, então usei a campo date do html5 .

 

Não consegui mudar o mês ainda , está em inglês mais resolvi.

obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×