2010-12-15 13 views
31

por ejemplo, quiero llamar a una función js a las 10.00.00.00 am ¿cómo puedo hacer?Llamar a una función de JavaScript en un momento específico del día

<script type="text/javascript"> 

var now = new Date(); 

var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 30, 0, 0) - now; 

setTimeout(function{openAPage(), setInterval(openAPage, 60*1000)}, millisTill10) 

function openAPage() { 

var startTime = new Date().getTime(); 
var myWin = window.open("http://google.com","_blank") 
var endTime = new Date().getTime(); 
var timeTaken = endTime-startTime; 


document.write("<br>button [email protected]</br>") 
document.write(new Date(startTime)); 
document.write("<br>page [email protected]</br>") 
document.write(new Date(endTime)); 
document.write("<br>time taken</br>") 
document.write(timeTaken); 

myWin.close() 

} 

</script> 

que espero de este código a las 00.30 se abrirá Google y luego cada 1 minuto más tarde lo hará de nuevo? ¿Qué pasa con ese código?

Respuesta

64

Necesitará setTimeout para establecer un temporizador y Date para calcular cuánto tiempo debe transcurrir hasta que se active el temporizador.

var now = new Date(); 
var millisTill10 = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 10, 0, 0, 0) - now; 
if (millisTill10 < 0) { 
    millisTill10 += 86400000; // it's after 10am, try 10am tomorrow. 
} 
setTimeout(function(){alert("It's 10am!")}, millisTill10); 
+0

funcionando gracias .. una cosa más que quiero llamar a esa función cada 5 minutos más tarde de las 10 am, ¿cómo puede hacerlo? –

+2

Puede usar ['setInterval'] (https://developer.mozilla.org/en/DOM/window.setInterval). 'interval = setInterval (func, 5 * 60 * 1000);' luego puedes 'clearInterval (interval)' cuando no quieras continuar. –

+0

intervalo es válido desde las 10 a.m. o válido cuando abro la página ?? –

0

Suponiendo que el código se encuentra en una página web que será cargada antes de las 10:00 y que todavía puede ver a las 10:00, puede utilizar setTimeout() para configurar un evento programado. la función requiere una instrucción JS para ejecutarse y el número de milisegundos antes de que se ejecute. Puede encontrar esta segunda parte bastante fácilmente con las funciones de fecha incorporadas.

+0

¿puedes enviar un ejemplo de código por favor? –

9

Mi solución para ejecutar una secuencia de comandos en un momento específico, por cierto, no hay error para comprobar el tiempo de espera negativo.

//year, month 0-11, date, hour, min (can add ,sec,msec) 
var eta_ms = new Date(2015, 0, 21, 17, 0).getTime() - Date.now(); 
var timeout = setTimeout(function(){}, eta_ms); 
2

Bueno, se puede utilizar el paquete nodo ontime

Cuestiones relacionadas