到最高分钟的舍入时间

问题描述 投票:1回答:2

我正在尝试从正好1小时前开始计时,四舍五入到最高分钟。例如:19:17:01应该变成19:18:0019:17:59应该变成19:18:00

我已经知道如何将日期(减去1小时)转换为纪元:

var dat = new Date();
dat.setHours( dat.getHours() - 1 );
var epochstart = Date.parse(dat)
console.log(epochstart) //Returns e.g. 19:17:01 in epoch (Milliseconds) time

这可以正常工作,但是如何将日期四舍五入为分钟?

而且,如果可能的话,我想将毫秒转换为秒(我只能删除最后三个字符)

javascript date rounding epoch iso
2个回答
1
投票

您设法更改小时的方式,类似地,您可以更改分钟和秒。根据您的要求,以下是可能的解决方案:

var dat = new Date();
dat.setHours( dat.getHours() - 1 );
if(dat.getSeconds() > 0){
   dat.setMinutes(dat.getMinutes() + 1)
   dat.setSeconds(0)
}
var epochstart = Date.parse(dat)
console.log(dat.toString())
console.log(epochstart)

希望这会有所帮助:)

至于将毫秒转换为秒,将epochstart除以​​1000。


0
投票

一种方法是将时间值四舍五入到最接近的整分钟,这还将同时使秒和毫秒为零:

// Set date to next full minute or current time
// if at exctly 0 minutes and 0 milliseconds
function getNextFullMinute(date) {
  date.setTime(date - (date % 6e4) + 6e4);
  return date;
}

// Format options
let dateOpts = {
  hour: 'numeric',
  minute:'2-digit',
  hour12: false
};

// Get a Date set to the start of the next minute
let date = getNextFullMinute(new Date());
console.log(`The next full minute is at ${date.toLocaleString(void 0, dateOpts)}.`);
© www.soinside.com 2019 - 2024. All rights reserved.