Как получить сегодняшнюю дату / время UTC для 00:00:00 в JavaScript? - PullRequest
0 голосов
/ 01 ноября 2018

Когда я набираю следующий фрагмент кода:

new Date('2018-11-01')

Я получаю объект даты, представляющий следующую строку ISO.

"2018-11-01T00:00:00Z"

Я полагаю, что это представляет дату / время UTC для 2018-11-01 в 00: 00: 00.

Как программно получить объект даты / времени UTC текущего дня на 00:00:00?

В настоящее время у меня есть следующий фрагмент, который должен достичь моей цели, но он немного неловкий, поскольку я конвертирую полученную из момента назад строку в объект даты.

new Date(moment().format('YYYY-MM-DD'))

Хотелось бы увидеть одноразовое решение с использованием Vanilla JS или библиотеки, подобной momentJS.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы можете расширить объект Date с помощью простой функции. Это идеально, если вы работаете, например, с программным обеспечением для построения графиков и вам необходимо вызвать UTCfloor в нескольких разных местах, чтобы правильно выровнять данные; это помогает сделать звонки простыми и легкими.

Date.prototype.UTCfloor = function () {
    return new Date(Date.UTC(this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate()));
};

console.log(new Date().UTCfloor());

Отметим, что это также можно просто использовать как обычную функцию, передав дату.

function UTCfloor(date){
    return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
}

Хотя, на мой взгляд, проще использовать показанный выше звонок с расширением Дата.

0 голосов
/ 01 ноября 2018

Вы можете построить его вручную. Вот решение в ванили JS:

function getUTCMidnight(dateObj) {
  let date = `${dateObj.getUTCDate()}`.padStart(2, "0");
  let month = `${dateObj.getUTCMonth() + 1}`.padStart(2, "0");
  let year = dateObj.getUTCFullYear();
  return new Date(`${year}-${month}-${date}T00:00:00Z`);
}

function getCurrentUTCMidnight() {
  return getUTCMidnight(new Date());
}

console.log(getCurrentUTCMidnight());
console.log(getCurrentUTCMidnight().getTime());
console.log(getCurrentUTCMidnight() instanceof Date);
...