将(时间)时间舍入到最高分钟

时间:2020-01-18 10:44:44

标签: javascript date rounding epoch iso

我正在尝试将时间从正好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个字符)

2 个答案:

答案 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)}.`);