Как округлить время до ближайшей четверти часа, используя момент - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь создать массив часов в день с 15-минутными интервалами с моментом получения изображения метеорологического спутника в течение времени utc.

Пример: ["2019_10_09_17_00", "2019_10_09_17_15", "2019_10_09_17_30"]

Проблемаесли минуты не подходят ["2019_10_09_17_09", "2019_10_09_17_24", "2019_10_09_17_39"]

Я хочу получить минуты в форме 1700, а не 1709 или 1714, потому что изображение с метеорологического спутника не будет загружаться, если минуты не подходят! ,

Код

 // YYYY_M_DD_hh_mm

    const now = moment();

    const timeStops = [];

    for (let i = 0; i < 3; i++) {
      now.add(15, 'minutes');
      timeStops.push(now.utcOffset(-1).format('YYYY_M_DD_HH_mm'));
    }

    console.log(timeStops);

Есть идеи, пожалуйста?

1 Ответ

1 голос
/ 09 октября 2019

Вам не нужно использовать момент, чтобы сделать это. Просто сгенерируйте все минуты и часы, а затем объедините в массив дат.

const pad = v => v < 10 ? '0' + v : v;
const minutes = [0,15,30,45];
const hours = Array(24).fill(0).map((x,indx) => indx);
const hoursMinutes = hours.flatMap(h => minutes.map(m => [h,m].map(pad)));
const dates = hoursMinutes.map(([h,m]) => `2019_10_9_${h}_${m}`);
console.log(dates);
...