View Full Version : Ajuda com o Echo da Date =(


The Lavigne
08-05-2008, 15:57
Boas pessoal.

Estou num alojamento internacional como posso fazer "<? echo date('H:i - d/t/Y'); ?>" no horário de Portugal?

É que aqui são 14h56 e quando faço o echo da date aparece 9h56 =(


Alguém me ajuda???

MPalhas
08-05-2008, 16:02
date_default_timezone_set("Europe/Lisbon")

mas não sei se o servidor te permite alterar essas coisas. nunca usei servidores, não sei como funcionam nesse aspecto

se não der sempre podes somar 5 horas de cada vez que les a data

The Lavigne
08-05-2008, 16:41
date_default_timezone_set("Europe/Lisbon")

mas não sei se o servidor te permite alterar essas coisas. nunca usei servidores, não sei como funcionam nesse aspecto

se não der sempre podes somar 5 horas de cada vez que les a data


Pois nem eu sei onde se muda a data no servidor.

Já agora como é que soma +5 horas na data?

Thanks :)

MPalhas
08-05-2008, 16:46
a função que eu te dei, podes usá-la dentro do teu códio php. o que eu não sei é se os servidores costumam permitir alterações a esse tipo de coisas.

o desenrascanço (somar 5 horas) pode ser assim:

<?php
$hora= date('H')+5;
echo $hora.date(':i - d/t/Y');
?>

The Lavigne
08-05-2008, 16:59
a função que eu te dei, podes usá-la dentro do teu códio php. o que eu não sei é se os servidores costumam permitir alterações a esse tipo de coisas.

o desenrascanço (somar 5 horas) pode ser assim:

<?php
$hora= date('H')+5;
echo $hora.date(':i - d/t/Y');
?>



Funciona :D Viva aos desenrascanços! LOL

Fica bem obrigado ! :D

Futeboladas
08-05-2008, 18:42
O desenrascança é má ideia... deves ter um ficheiro .php que incluis em todas as páginas tipo: common.php. Nesse ficheiro mete o que já referiram:
date_default_timezone_set('Europe/Lisbon');

Desta forma todas as horas vão estão certas :)

Para o MySQL ficar com as horas certas, antes de fazeres a query faz sempre esta: (basta uma vez por ligação)
SET time_zone = "Europe/Lisbon"

Para o SSH ficar bem (e provavelmente o PHP/Apache, mas depende do host), cria um file .profile com isto:
export TZ="Europe/Lisbon"
ou um file .bash_profile com o mesmo conteudo referido (nunca sei qual é o file certo :P)

MPalhas
08-05-2008, 19:40
pois eu tinha dado essa solução porque como já disse, não sei se os servidores permitem essas coisas. lavigne, chegaste a testar a função que eu dei? na pratica vai dar ao mesmo mas é uma prática melhor do que estar a desenrascar

Futeboladas
08-05-2008, 20:02
pois eu tinha dado essa solução porque como já disse, não sei se os servidores permitem essas coisas. lavigne, chegaste a testar a função que eu dei? na pratica vai dar ao mesmo mas é uma prática melhor do que estar a desenrascar

A solução que deste é, pelo que sei, a solução recomendada e que funciona em todos os servers. Já testei em pelo menos 2 hosts com timezones diferentes e funciona sempre :) Pelo menos em PHP5 é a solução 100% certa.

Não esquecer é incluir essa chamada logo no inicio de qualquer PHP file e incluir em todos os ficheiros! (daí eu recomendar que se use um ficheiro common.php, todas as páginas "index.php" por exemplo devem começar por incluir o common.php, é uma questão de organização básica e muito usada).

Mas qualquer coisa, é consultar:
http://pt.php.net/manual/en/function.date-default-timezone-set.php



Edit: correcção. Funciona desde que se use PHP 5.1 ou superior!

The Lavigne
10-05-2008, 02:33
Encontrei grande BUG neste desenrascando :D
25:30 - 09/31/2008

:(


Mas com aquela função já funciona :D

The Lavigne
11-05-2008, 02:18
Alguma coisa esta mal com as vossas funções, agora aparece assim:
01:17 - 11/31/2008

a hora tá certa agora a data não :lol:

Kayvlim
11-05-2008, 03:17
Que código estás a usar? Não andaste a misturar desenrascanços, pois não? :P

MPalhas
11-05-2008, 15:55
deves estar a usar a função date tal e qual como eu pus no exemplo, e ela tem um erro, que nem sei porque é que pus assim

echo $hora.date('H:i - d/t/Y');

troca o "t" por um "m" e já fica direito

echo $hora.date('H:i - d/m/Y');

The Lavigne
11-05-2008, 23:02
Estou a usar assim:

<?php
date_default_timezone_set("Europe/Lisbon");
echo date('H:i - d/t/Y');
?>


E depois aparece assim:

22:01 - 11/31/2008

MPalhas
11-05-2008, 23:39
por acaso leste o que eu escrevi? troca o "t" por um "m". foi um engano meu.

metralha761
12-05-2008, 01:32
t Number of days in the given month 28 through 31
:) no proximo mes ja te mostra 30 :D

The Lavigne
12-05-2008, 03:24
Por acaso tenho que passar uma vista de olha no significado das letras em relação á date :D

MPalhas: Muito obrigado pela sua atenção, já está tudo corrigido e funcionar :)