圆形(纪元)时间到最高分钟

Round (epoch) time to highest minute

我正在尝试获取恰好 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 个字符)

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

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。

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

/* 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)}.`);