【问题标题】:How do I trigger a function when the time reaches a specific time当时间到达特定时间时如何触发功能
【发布时间】:2011-06-18 19:00:48
【问题描述】:

我想在时间到达时触发一个 javascript 函数,比如下午 3:00。

时间将动态分配。那么有没有什么javascript函数可以实现呢?

【问题讨论】:

  • 您想准确地在下午 3:00 触发它,或者在特定的时间间隔检查是否已经过了下午 3:00?
  • 说我想在每天下午 3:00 准确触发该功能.. 类似于警报。 (不过,时间会在以后动态分配)

标签: javascript jquery


【解决方案1】:

您只需要计算当前时间与目标时间之间的差值,并将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);

或者更确切地说,您可以执行以下操作,而不是解析日期(因为这在浏览器之间确实不一致):

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

【讨论】:

  • 本次无需差分计算,不涉及时间段。
  • 当然有,setTimeout 需要一段时间等待(以毫秒为单位),而该时间段应该是现在和“警报”时间之间的差异。
  • 声明函数的不寻常语法 - 可能是出于示例目的,使用更标准的 function alert3pm(){} 可能更清晰?
  • @Basiclife:JavaScript 用户应该对两者都很熟悉......我不确定它们中的任何一个现在是否符合“更标准”的条件。
  • @Matti Virkkunen 我知道两者都同样有效,但由于 OP 不知道如何使用 SetTimeout() 等到指定时间,因此他不太可能熟悉用于定义函数的替代技术.我并没有试图引发语法大战,但我相信大多数 JS 教程都倾向于使用 function Name(){} 语法,因为它更接近于其他语言中使用的实现。我只是想让答案更容易理解 OP。如果您不同意,我很抱歉。
猜你喜欢
  • 2019-01-16
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
相关资源
最近更新 更多