Pergunta

Roteiro: http://keith-wood.name/countdown.htm

Resposta diária JSON:

items: { fajr: '5:23 am', sharooq: '7:23 am', dhur: '1:34 pm', asr: '4:66 pm': magrib: '6:23 pm', isha: '8:01 pm'}

Quando o site é carregado, faço uma solicitação AJAX e obtenho os tempos de resposta acima. Estes são eventos que acontecem diariamente, com horários diferentes. Quero chegar a esse tempo e contar com quantos minutos restam ou horas ou segundos e mostrar isso e, uma vez que os segundos estiverem concluídos, mostre há quantos minutos esse evento ocorreu. Após 15 minutos, mostre uma nova contagem de eventos. É assim que ficará na tela:

dhur 2 hours left
dhur 2 minutes left (if no longer hours left)
dhur 55 seconds left (if no longer minutes left)
dhur 5 seconds ago (if count down finished and then show how many seconds ago)
dhur 9 minutes ago (if extended more then seconds, then show how many minutes ago)
asr 1 hour left (after 15 minutes later time changes to new event)

Se o script que estou usando não for bom e você preferir outro script para esse tipo de tarefa, compartilhe comigo. Não precisa ser um script jQuery, mas ajuda se for jQuery.

Foi útil?

Solução

Eu acho que você seria melhor não reimplementar essa coisa.

Já existe um plugin jQuery muito bom para essa funcionalidade (com suporte i18n também)

JQuery TimeAgo

O TimeAgo é um plug -in jQuery que facilita o suporte automaticamente atualizando o registro de data e hora (por exemplo, "4 minutos atrás" ou "cerca de 1 dia atrás" ou "2 anos daqui a")

PS: Não se esqueça de definir jQuery.timeago.settings.allowFuture = true; para permitir datas no futuro


Se você precisar de algum tipo de "retorno de chamada", poderá fazer duas coisas.

  1. Supondo que você apenas apoiou o inglês (não i18n), basta usar setInterval que a cada 20-25 segundos verifica se a string definida pelo JQuery TimeAgo é "15 minutos atrás" e depois faça o que
  2. Hack Adapte o código do plugin e conecte -se ao por exemplo $timeago.inWords método e faça o que quer que distanceMillis parâmetro é >=900000 (15*60*1000).
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top