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

Sign in to follow this  
xploit

relogio digital com hora do servidor

Recommended Posts

xploit

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

Share this post


Link to post
Share on other sites
skin

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.


Our lives begin to end the day we become silent about things that matter - Martin Luther King

Share this post


Link to post
Share on other sites
softklin

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.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
xploit

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

Share this post


Link to post
Share on other sites
TheGlorious

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.


A inteligência não nasce connosco...

Share this post


Link to post
Share on other sites
xploit

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>

Share this post


Link to post
Share on other sites
softklin

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 ;)


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
TheGlorious

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.


A inteligência não nasce connosco...

Share this post


Link to post
Share on other sites
softklin

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.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
TheGlorious

"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 :)


A inteligência não nasce connosco...

Share this post


Link to post
Share on other sites
softklin

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


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
yoda

"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 :)

Share this post


Link to post
Share on other sites
TheGlorious

Hmm...

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


A inteligência não nasce connosco...

Share this post


Link to post
Share on other sites
xploit

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

Cumprimentos

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.