我正在尝试从正好1小时前开始计时,四舍五入到最高分钟。例如:19:17:01应该变成19:18:00&19: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
这可以正常工作,但是如何将日期四舍五入为分钟?
而且,如果可能的话,我想将毫秒转换为秒(我只能删除最后三个字符)
您设法更改小时的方式,类似地,您可以更改分钟和秒。根据您的要求,以下是可能的解决方案:
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。
一种方法是将时间值四舍五入到最接近的整分钟,这还将同时使秒和毫秒为零:
// 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)}.`);