Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sergionpinheiro

Pegar hora do servidor

Recommended Posts

Bom dia galera,

 

Estou desenvolvendo um sistema de leilão onde tem um contador regressivo mostrando, em javascript, o tempo restante para o usuário poder dar lances.

 

O que acontece é que se o usuário alterar a hora do computador dele, o contado regressivo também altera. Porém, este código está hospedado e com time_zone para Sao_Paulo, ou seja, era para pegar a hora do servidor onde está hospedado e não do computador local. Alguém tem alguma ideia do porque está havendo isso? Como faço para determinar o time_zone em javascript?

 

Valeu.

 

<script language="javascript">
var YY = 2015;
var MM = 10;
var DD = 10;
var HH = 10;
var MI = 00;
var SS = 00;
function relogioRegressivo() {
var hoje = new Date();
var futuro = new Date(YY,MM-1,DD,HH,MI,SS);
var ss = parseInt((futuro - hoje) / 1000);
var mm = parseInt(ss / 60);
var hh = parseInt(mm / 60);
var dd = parseInt(hh / 24);
ss = ss - (mm * 60);
mm = mm - (hh * 60);
hh = hh - (dd * 24);
var faltam = '';
faltam += (toString(hh).length) ? hh+'<span style=\"font-size:12px;\">h</span>  ' : '';
faltam += (toString(mm).length) ? mm+'<span style=\"font-size:12px;\">m</span>  ' : '';
faltam += ss+'<span style=\"font-size:12px;\">s</span>  ';
if (dd+hh+mm+ss > 0) {
document.getElementById('relogio').innerHTML = faltam;
setTimeout(relogioRegressivo,1000);
}else{
document.getElementById('relogio').innerHTML = '0<span style=\"font-size:12px;\">h</span>  0<span style=\"font-size:12px;\">m</span>  0<span style=\"font-size:12px;\">s</span>';
document.getElementById('dar_lance').style.display = "none";
setTimeout(relogioRegressivo,1000);
}
}
</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais seguro é vc sempre fazer com base no servidor.

 

Exemplo:

https://github.com/wbruno/examples/blob/gh-pages/time-counter/index.html

 

Funcionando:

http://wbruno.github.io/examples/time-counter/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela dica Bruno, show de bola. Só uma pergunta: como faço para ao invés de aparecer 1 dia, ... Ele incrementar as horas dos dias nas próprias horas. Ex.: Faltam: 1 dia, 08h 20m 30s, queria que ficasse: 32h 20m 30s.

 

Vi que o segredo está aqui, mas não acertei manipular.

function _timeLeft (now, end) {
  if (now <= end) {
    var seconds = parseInt((end - now) / 1000, 10),
        minutes = parseInt(seconds / 60, 10),
        hours   = parseInt(minutes / 60, 10),
        days    = parseInt(hours / 24, 10),
        left    = '';
 
    seconds = seconds - (minutes * 60);
    minutes = minutes - (hours * 60);
    hours   = hours   - (days * 24);
 
    left += (days && days > 1) ? days + ' dias, ' : (days === 1 ? '1 dia, ' : '');
    left += (toString(hours).length) ? hours + 'h ' : '';
    left += (toString(minutes).length) ? _timePad(minutes) + 'm ' : '';
    left += _timePad(seconds) + 's';
 
    if (days + hours + minutes + seconds > 0) {
      return left;
    } else {
      return 'Tempo esgotado!!!!';
    }
  } else {
    return 'Tempo esgotado!!!!';
  }
}

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não faça a divisão por 24

 

 days    = parseInt(hours / 24, 10),

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por master2015
      Boa tarde pessoal,
       
      Estou pesquisando há algum tempo sobre esse problema, mas não encontrei a solução.
      Espero que me ajudem.
       
      Eu criei um contador regressivo para meu site,  e ele está funcionando perfeitamente em sistemas Android e também no Chrome e Firefox.
      Mas, hoje eu testei ele no Iphone e no Ipad e onde era para aparecer os números dos contadores, está aparecendo "aN" . 
      Eu testei o Chrome e o Safari no Ipad e Iphone e problema aparece do mesmo jeito.
       
      Segue o código que eu estou usando:
      <script> function getTimeRemaining(endtime) { var t = Date.parse(endtime) - Date.parse(new Date()); var seconds = Math.floor((t / 1000) % 60); var minutes = Math.floor((t / 1000 / 60) % 60); var hours = Math.floor((t / (1000 * 60 * 60)) % 24); var days = Math.floor(t / (1000 * 60 * 60 * 24)); return { 'total': t, 'days': days, 'hours': hours, 'minutes': minutes, 'seconds': seconds }; } function initializeClock(id, endtime) { var clock = document.getElementById(id); var daysSpan = clock.querySelector('.days'); var hoursSpan = clock.querySelector('.hours'); var minutesSpan = clock.querySelector('.minutes'); var secondsSpan = clock.querySelector('.seconds'); function updateClock() { var t = getTimeRemaining(endtime); daysSpan.innerHTML = ('0' + t.days).slice(-2); hoursSpan.innerHTML = ('0' + t.hours).slice(-2); minutesSpan.innerHTML = ('0' + t.minutes).slice(-2); secondsSpan.innerHTML = ('0' + t.seconds).slice(-2); if (t.total <= 0) { clearInterval(timeinterval); } } updateClock(); var timeinterval = setInterval(updateClock, 1000); } var deadline = '2017-11-20 00:00:00 GMT-0200'; initializeClock('clockdiv', deadline); </script> Desde já, obrigado.
    • Por Danilo CS
      Olá!
      Do nada meu contador desapareceu, eu já penei pra descobrir o problema mas não sei o que é. 
      Por exemplo se eu abro ele separado da página ele funciona....
       
      <body onLoad="atualizaContador()"> <h2 class="titulo t2" >Próxima Corrida</h2> <div id = "Mensagem" style = "margin: 0"> <div class = "centralizar" style = "margin: 0"> <div id = "Relogio"><span id = "contador"> <script> var YY = "2018"; var MM = "1"; var DD = "1"; var HH = "1"; var MI = "1"; var SS = "00"; </script> </span> </div> </div> </div> </body> Script:
      <script> function atualizaContador() { var hoje = new Date(); var futuro = new Date(YY,MM-1,DD,HH,MI,SS); var ss = parseInt((futuro - hoje) / 1000); var mm = parseInt(ss / 60); var hh = parseInt(mm / 60); var dd = parseInt(hh / 24); ss = ss - (mm * 60); mm = mm - (hh * 60); hh = hh - (dd * 24); var faltam = ''; faltam += (dd && dd > 1) ?+dd+'<b>D </b>' : (dd==1 ? '1<b>D</b>' : ''); faltam += (toString(hh).length) ? hh+'<b>H </b> ' : ''; faltam += (toString(mm).length) ? mm+'<b>M </b>' : ''; faltam += ss+'<b>S </b>'; if (dd+hh+mm+ss > 0) { document.getElementById('contador').innerHTML = faltam; setTimeout(atualizaContador,1000); } else { document.getElementById('contador').innerHTML = 'A Oferta Encerrou!'; setTimeout(atualizaContador,1000); document.getElementById('encerrar1').innerHTML = ''; document.getElementById('encerrar2').innerHTML = ''; document.getElementById('encerrar3').innerHTML = ''; document.getElementById('nao-aceitar').innerHTML = 'NADADADADA'; document.getElementById('continuar').innerHTML = 'NADADADA'; } } </script> Na página:
      http://www.superdanilof1page.com.br/index Não funcionando
      http://www.superdanilof1page.com.br/teste Funciona
      No include separado: http://www.superdanilof1page.com.br/elementos/horarios-corrida  Funciona
       
      O que pode ser isso?
      Até semana passada estava funcionando tudo certinho. Não faço ideia o que aconteceu ou que eu fiz para isso acontecer
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.