Ir para conteúdo
Fórum Script Brasil
  • 0

Countdown Diario sincronizado com server


m3io

Pergunta

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 no brasil, 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 no brasil , 4 horas na china, 0 noutro lado qualquer....

alguém sabe o que pode ser o problema?

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Há menos que o seu contador em JavaScript aceite receber a quantidade de tempo que FALTA e não a hora que ele deve parar abandone-o pois não tem como.

Seguinte, você tem que fazer uma função em PHP que pegue a hora final subtraia a hora atual e envie para o JavaScript a quantidade de horas, minutos e segundos que FALTAM para que o refresh aconteça, em vez de deixar o calculo da diferença nas "mãos" do JavaScript.

E fazendo do jeito que eu te falei você não precisa de função em AJAX, já que o usuário receberá o tempo que falta do servidor e a partir dai é problema do JavaScript fazer o tempo correr.

Editado por Markus Magnus
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...