2011-01-31 3 views
4

Я хочу вызвать функцию javascript, когда время дойдет, скажем, до 3:00 вечера.Как вызвать функцию, когда время достигает определенного времени

Время будет назначено динамически. Так есть ли какая-либо функция javascript для достижения этого?

+0

Вы хотите trigge r это точно в 3:00 вечера, или проверить через определенные интервалы, если 3:00 вечера прошло? –

+0

Скажите, что я хочу вызвать функцию ровно в 3 часа дня каждый день .. что-то вроде тревоги. (Хотя, время будет назначено динамически позже) – ptamzz

ответ

7

Вам просто нужно рассчитать разницу между текущим временем и целевым временем и использовать setTimeout() с этим значением.

Например, в зависимости от того, как ваши целевые браузеры анализировать даты, вы можете сделать следующее:

function alert3pm() { 
    alert("It's 3PM!"); 
} 
var timeAt3pm = new Date("1/31/2011 03:00:00 PM").getTime() 
    , timeNow = new Date().getTime() 
    , offsetMillis = timeAt3pm - timeNow; 
setTimeout(alert3pm, offsetMillis); 

Или, скорее, instaed разбора дату (так как это действительно несовместимыми между браузерами) вы можете сделать что-то вроде это:

function getTimeAtHour(hour) { 
    var t = new Date(); 
    t.setHours(hour); 
    t.setMinutes(0); 
    t.setSeconds(0); 
    t.setMilliseconds(0); 
    return t; 
} 
+0

Для этого не требуется никакого расчета разницы, нет никакого периода времени. –

+1

Конечно, есть, setTimeout занимает период времени для ожидания (в мс), и этот период времени должен быть разницей между теперь и временем «тревоги». – maerics

+1

Необычный синтаксис для объявления функции - возможно, например, с использованием более стандартной функции alert3pm() {} 'может быть понятнее? – Basic

Смежные вопросы