【问题标题】:round time to previous 15 min javascript循环到前 15 分钟 javascript
【发布时间】:2021-06-17 12:48:58
【问题描述】:

我想在 js 中从给定时间或日期开始前 15 分钟,例如我有 11:20 我想获得 11:15,12:57 我想获得 12:45,我试过这个:

      var round = 1000 * 60 * 15;
      var date = new Date()
      console.log(date)
      var rounded = new Date(Math.round(date.getTime() / round) * round)

但这给了我最近的 15 分钟而不是前一个,例如 15:57,当我想得到 15:45 时,它给了我 16:00 有什么解决办法吗?

【问题讨论】:

  • 使用Math.floor 而不是Math.round
  • 谢谢,成功了
  • 还有date.setMinutes((date.getMinutes() / 15 | 0) * 15, 0, 0),其中| 0 的行为类似于Math.floor。 :-)

标签: javascript date time


【解决方案1】:

如果您想获得上一个时间,您需要使用Math.floor 而不是Math.round(正如@ciekals 在 cmets 中提到的那样)。

Math.round 将给出接下来的 15 分钟时间,如果时间更接近它,​​例如如果您使用Math.round,则 7:29 将为 7:30。但是如果你想让 7:29 返回 7:15,那么你应该使用Math.floor

 var round = 1000 * 60 * 15;
var date = new Date()
console.log(date)
var rounded = new Date(Math.floor(date.getTime() / round) * round)
console.log(rounded)

【讨论】:

    【解决方案2】:

    您可以使用模数向下舍入

    var rounded = new Date(date.getTime()-(date.getTime()%round)))
    

    这样您就可以消除dateround 的倍数的差异

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2021-09-13
    相关资源
    最近更新 更多