Раунд (эпоха) время до самой высокой минуты - PullRequest
1 голос
/ 18 января 2020

Я пытаюсь получить время эпохи ровно от 1 часа до go, округленное до максимальной минуты. Например: 19: 17: 01 должно стать 19: 18: 00 & 19: 17: 59 должно стать 19: 18: 00 et c.

Я уже знаю, как преобразовать дату (минус 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

Это работает и все, но как мне округлить дату до минуты UP?

И, если возможно, я хочу преобразовать миллисекунды в секунды (я могу просто удалить последние 3 символа)

Ответы [ 2 ]

1 голос
/ 18 января 2020

Способ, которым вам удалось изменить час, аналогично, вы можете изменить минуты и секунды. Исходя из вашего запроса, ниже возможное решение:

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.

0 голосов
/ 18 января 2020

Один из подходов заключается в округлении значения времени до ближайшей полной минуты, которое также обнуляет секунды и миллисекунды одновременно:

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