我正在尝试将时间从正好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
这一切正常,但是我如何将日期向上取整?
并且,如果可能的话,我想将毫秒转换为秒(我可以删除最后3个字符)
答案 0 :(得分:1)
您同样可以更改小时和小时,也可以更改分钟和秒。根据您的要求,以下是可能的解决方案:
let dat = new Date();
dat.setHours(dat.getHours() - 1);
if (dat.getSeconds() > 0) {
dat.setMinutes(dat.getMinutes() + 1);
dat.setSeconds(0);
}
const epochstart = Date.parse(dat);
console.log(dat.toString());
console.log(epochstart);
要将毫秒转换为秒,请将epochstart
除以1000。
答案 1 :(得分:0)
一种方法是将时间值四舍五入到最接近的整分钟,这也会同时将秒和毫秒清零:
/* Set date to next full minute or current time
* if at exctly 0 minutes and 0 milliseconds
* @param {Date} date - start date
* @returns {Date} new Date set to next full minute
*/
function getNextFullMinute(date) {
return new Date(date - (date % 6e4) + 6e4);
}
// 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)}.`);