• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

xploit

relogio digital com hora do servidor

14 mensagens neste tópico

Boas pessoal como o próprio título indica gostaria de saber como faço um relogio digital( ou seja que se actualize) , mas em vez de ser com a minha hora

local que seja com a hora do servidor.. Não percebo muito de javascript só mesmo de php precisava de uma ajuda vossa muito obrigado.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com javascript isso não é possível porque javascrit é interpretado do lado do utilizador pelo browser (daí ser uma linguagem client side) assim sendo vai retribuir a hora do computador do utilizador.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes sempre fazer algo do género:

<?php
$horaServidor = date("d/m/Y h:i:s");
?>
<script>
var d = new Date("<?php echo $horaServidor; ?>");
document.write(d.toGMTString())
</script>

A hora é inicializada com a do servidor. Depois terás de uma função, será a setTimeout() com o código para actualizar isto de segundo a segundo... Não é uma solução perfeita, mas se quiseres o máximo rigor, podes ir de tempos a tempos, sincronizando com AJAX.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois o grande problema disto tudo é que eu de javascript/ajax não percebo, mas a ideia é so mesmo actualizar a H:I:S, não precisa ser a data completa,

e depois apartir dessa hora ||date("h:i:s");|| criar um código que actualiza-se a hora para ser uma coisa dinamica eu não faço mesmo a minima ideia e de como fazer isso, ou seja o setTimeout() nem como implementá-lo se me puderem ajudar fico muito agradeçido.

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Colocas isto entre <head></head>:

<script type="text/javascript">
<!--
var h = <?=date("H", time()+3*3600);?>; <!-- Aqui indicas o número de horas a mais ou a menos do servidor (neste caso 3) -->
var m = <?=date("i")?>;
var s = <?=date("s");?>;
function Relogio(){
if(s>=59){s=-1;m=m+1;
if(m>=60){m=00;h=h+1;
if(h>=24){h=00;}}}s=s+1;
if(h<=9){xh="0"+h;}else{xh=h;}
if(m<=9){xm="0"+m;}else{xm=m;}
if(s<=9){xs="0"+s;}else{xs=s;}
document.getElementById("Relogio").innerHTML = xh+":"+xm+":"+xs;
t=setTimeout("Relogio()", 1000);
}
-->
</script>

Depois, onde queres mostrar o relogio metes:

<span id="Relogio"></span>

Este script foi retirado da internet (não me lembro de onde) e alterado por mim.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

testei o teu código e nao funciona penso nao estar a fazer algo de errado.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">

var h = <?=date("H", time()+3*3600);?>; 
var m = <?=date("i")?>;
var s = <?=date("s");?>;
function Relogio(){
if(s>=59){s=-1;m=m+1;
if(m>=60){m=00;h=h+1;
if(h>=24){h=00;}}}s=s+1;
if(h<=9){xh="0"+h;}else{xh=h;}
if(m<=9){xm="0"+m;}else{xm=m;}
if(s<=9){xs="0"+s;}else{xs=s;}
document.getElementById("Relogio").innerHTML = xh+":"+xm+":"+xs;
t=setTimeout("Relogio()", 1000);
}
</script>
</head>

<body>
</body>
<span id="Relogio"></span>
</html>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só te faltou chamar a função. Fica aqui o código:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">

var h = <?php echo date("H");?>; 
var m = <?php echo date("i");?>;
var s = <?php echo date("s");?>;
function Relogio(){
if(s>=59){s=-1;m=m+1;
if(m>=60){m=00;h=h+1;
if(h>=24){h=00;}}}s=s+1;
if(h<=9){xh="0"+h;}else{xh=h;}
if(m<=9){xm="0"+m;}else{xm=m;}
if(s<=9){xs="0"+s;}else{xs=s;}
document.getElementById("Relogio").innerHTML = xh+":"+xm+":"+xs;
t=setTimeout("Relogio()", 1000);
}
</script>
</head>

<body onload="Relogio();">
<span id="Relogio"></span>
</body>
</html>

Removi as 3 horas a mais, porque acho não ser necessário, visto que o PHP vai buscar as horas no servidor onde está a trabalhar.

Bom código TheGlorious ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Funciona sim.

Eu utilizo no meu jogo.

As horas a mais são para caso tenhas a página alojada num servidor estrangeiro e queiras que mostre para o público a hora portuguesa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Funciona sim.

Eu utilizo no meu jogo.

As horas a mais são para caso tenhas a página alojada num servidor estrangeiro e queiras que mostre para o público a hora portuguesa.

Ninguém disse que não funcionava  :) O xlpoit apenas esqueceu-se de chamar a função Relogio no arrancar da página. E as horas também alterei porque a hora que o xploit pretende as horas do servidor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"testei o teu código e nao funciona" by xploit

Eu só disse que funcionava e disse para que servia aquele "3*3600", porque ele poderia não saber e como muita gente usa servidores estrangeiros e muitas vezes querem que apareça sempre a hora portuguesa, então eu já incluí isso :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ops, pensei que te estavas a referir à minha mensagem...  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

"testei o teu código e nao funciona" by xploit

Eu só disse que funcionava e disse para que servia aquele "3*3600", porque ele poderia não saber e como muita gente usa servidores estrangeiros e muitas vezes querem que apareça sempre a hora portuguesa, então eu já incluí isso :)

O php tem funções nativas para converter os GMTs, nem era preciso essa multiplicação.

As funções são estas :

setlocal

http://pt2.php.net/manual/en/function.setlocale.php

gmdate

http://pt2.php.net/manual/en/function.gmdate.php

Mas isto foi só um aparte :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmm...

Eu custumo utilizar o strotime(), mas neste caso, pensei que não fosse necessário estar a utilizar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora sim funciona perfeitamente nem sabes o quanto me ajudou este relógio hehe muito obrigado =)

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora