【问题标题】:How can I round time to hours and minutes instead of hours, minutes and seconds?如何将时间舍入到小时和分钟而不是小时、分钟和秒?
【发布时间】:2021-07-10 15:38:17
【问题描述】:

例如,我的函数会像 10:43:22 这样返回时间。如何将时间四舍五入到最接近的分钟,使10:43:22 变为10:4310:43:44 变为10:44

function time (){
    let date = new Date()
    let time = date.toLocaleTimeString("it-IT");
}

【问题讨论】:

  • 这能回答你的问题吗? Round a Date() to the nearest 5 minutes in javascript 5 分钟,但您可以轻松更改
  • 您使用日期时间格式化程序。另外,记得问问自己你想要的是否有意义。只是“不显示秒数”几乎总是很好,因为在时间方面,它不是“10:44”,直到它超过“10:43:59”。时间通常不会“四舍五入”。

标签: javascript function date datetime time


【解决方案1】:

我们可以使用下面的代码通过删除秒部分来创建新的日期

var d = new Date()
var d1 = new Date(d.getYear(),d.getMonth(),d.getDate(),d.getHours(),d.getMinutes())
console.log(d1.toLocaleTimeString('it-IT'))

【讨论】:

  • 这只会删除秒数,但不会四舍五入?
  • 它不圆。第一条评论的链接中的正确答案
【解决方案2】:

我会获取该日期的毫秒数,然后将该值四舍五入为分钟(1 分钟 = 60,000 毫秒)。

function createRoundedDate(date) {
  var ts = date.getTime();
  ts = Math.round(ts / 60000) * 60000;
  return new Date(ts);
}

console.log(createRoundedDate(new Date()))

【讨论】:

  • 添加 .toLocaleTimeString("it-IT",{hour:'numeric',minute:'2-digit'}) 将完成这项工作。 :-)
【解决方案3】:

应该这样做,并处理几个小时等(60,000 个滴答声是 1 分钟)

function time(){
  let date = new Date()
  let dateMins = new Date(date.getYear(),date.getMonth(),date.getDay(),date.getHours(),date.getMinutes())
  let roundedDate = new Date(dateMins.getTime() + date.getSeconds() > 30 ? 60000 : 0 )
  let time = roundedDate.toLocaleTimeString("it-IT");
}

【讨论】:

  • “滴答”是指毫秒,是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
  • 2011-07-04
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多