【问题标题】:Calculate amount of time until the next hour计算距离下一小时的时间
【发布时间】:2012-02-18 01:17:31
【问题描述】:

我正在开发一个公交网站项目,公交车每小时一班。我无法创建一个小部件来查找从现在到下一个小时之间的时间,以便清楚地知道下一辆公共汽车何时运行。我的客户要求它在 javascript 中。有什么建议么? 提前致谢。

【问题讨论】:

  • 到目前为止你有什么代码?
  • 你真的不需要下一个小时之前的时间,你需要时间加上一个增量,除非巴士路线上只有一个站并且巴士到达那里正好在整点。

标签: javascript time


【解决方案1】:

要准确知道从现在到下一小时的毫秒数:

function msToNextHour() {
    return 3600000 - new Date().getTime() % 3600000;
}

请注意,这将严格告诉您距下一个小时还有多少毫秒(如果您在 4:00:00.000 运行它,它将给您正好一小时)。

【讨论】:

    【解决方案2】:
    function getMinutesUntilNextHour() { return 60 - new Date().getMinutes(); }
    

    请注意,系统时钟关闭的人会错过他​​们的巴士。使用服务器时间而不是客户端计算机上的时间可能会更好(AKA 至少部分是非客户端 JavaScript 解决方案)。

    【讨论】:

      【解决方案3】:

      你有 Javascript 中的 Date 对象,你可以这样做:

      var now = new Date();
      var mins = now.getMinutes();
      var secs = now.getSeconds();
      var response = "it will be " + (60 - mins - 1) + " minutes and " + (60 - secs) + " seconds until the next bus";
      

      当然,您将不得不在这些计算上做更多工作,但这就是您在 javascript 中处理时间的方式

      【讨论】:

        【解决方案4】:

        其他两个答案中的任何一个都可以很好地工作,但是您是否知道有关 JS 可以为您做的所有其他好事情的文档可供您使用?

        Mozilla Date Docs

        https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

        【讨论】:

          【解决方案5】:

          很多答案,一个非常简单的函数来获取下一小时剩余的四舍五入分钟数是:

          function minsToHour() {
            return 60 - Math.round(new Date() % 3.6e6 / 6e4);
          }
          

          【讨论】:

          • 从 60 中减去 Date#getMinutes() 而不是这里的方法不是更有意义吗?很难说发生了什么事,我很确定它已经关闭了一分钟,而且它在很久以前的日期都失败了。此外,getMinutes 方法编写的代码更少,更容易记住。
          • 为什么人们会在“遥远的过去”等公共汽车?无论如何,这只是另一种方式。上述回合因此在最后 30 秒内应该显示 0,使用 getMintues() 将在最后一分钟内显示 0,除非您还处理秒数。但我怀疑这是否重要,公共汽车如何准确地遵守时间表?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多