Jump to content

Countdown Diario sincronizado com server


m3io

Recommended Posts

boas pessoal, já ando aqui á 4 dias a tentar resolver um problema com um countdown diario

a situacao é a seguinte

tenho um countdown diario a dar com uma hora definida. e faz refresh ao acabar, ate aqui tudo bem

o problema é mesmo que tem de mostrar a mesma hora para todo o mundo, por exemplo faltam 2 horas na china ou faltam 2 horas na tuga, sempre igual para todos, este é o obstáculo que não consigo ultrapassar

o codigo é o seguinte

serversideTIME.php

date_default_timezone_set('Europe/Paris');
$now = new DateTime();
echo $now->format("M j, Y H:i:s O") . "\n";

estou a usar o script de http://keith-wood.name/countdown.html

aqui o javascript

$('#time').countdown({serverSync: serverTime(), until: getTarget(), onExpiry: restartCountdown, compact: true});
///obtem hora do servidor
function serverTime() {
  var time = null;
  $.ajax({url: '/site/serversideTIME.php',
	    async: false, dataType: 'text',
	    success: function(text) {
		    time = new Date(text);
	    }, error: function(http, message, exc) {
		    time = new Date();
	    }});
    return time;
}
//
function restartCountdown() {
  window.location.reload(true);
  $('#time').countdown('change', {until: getTarget()});
}
//
function getTarget() {
  var serverDate = new Date(<?php echo strtotime(now()); ?>);
  var target = serverDate;
  var hora = 15;
  var minutos = 51;
  if (target.getHours() < hora || (target.getHours() == hora && target.getMinutes() < minutos)) {
  target.setHours(hora, minutos, 0, 0);
  }
  else {
  target.setDate(target.getDate() + 1);
  target.setHours(hora, minutos, 0, 0);
  }
  return target;
}

basicamente ele vai buscar a tempo limite definido em getTarged de todos os dias, e ao expirar faz um refresh.

mas o problema é que devia mostrar que faltam x minutos igual em todas as partes do mundo e não 1 hora em portugal, 4 horas na china, 0 noutro lado qualquer....

alguém sabe o que pode ser o problema?

Link to comment
Share on other sites

O problema está aqui :

time = new Date();

Esta linha vai-te dar a data corrente em função da localização do cliente (ou da que ele indicou no SO / browser). Para não teres este problema precisas de mudar o script de forma a fazer o countdown sem essa data.

Link to comment
Share on other sites

boas, e obrigado pela ajuda, mas a solução nao funciona 😞

eu fiz como disses-te

}, error: function(http, message, exc) {
	   //   time = new Date();

comentei essa parte, o stress é que eu mudo a hora e fuso horario do meu pc e quando volto a testar ,

em vez de dizer que faltam por exemplo 30 minutos e diz que faltam 30 minutos e a diferenca de horas do gmt do cliente,

enquanto que o meu objectivo é que faca countdown até á meia noite de portugal, para todo o planeta independentemente que sejam que horas forem na china, á meia de portugal faz o tal refresh em todo o mundo.

Obrigado desde ja pela ajuda 😄

Link to comment
Share on other sites

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
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
×
×
  • Create New...

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.