Момент - угловая генерация массива времени минус 15 минут - PullRequest
1 голос
/ 08 октября 2019

У меня есть дата запуска спутникового снимка погоды 2019_10_08_08_00.jpg.

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

[
"2019_10_08_08_00",
"2019_10_08_07_45",
"2019_10_08_07_30",
"2019_10_08_07_15",
"2019_10_08_07_00",
]

Код:

let startTime = moment('YYYY_M_DD_HH_MM');
let endTime = moment('YYYY_M_DD_HH_MM');

if( endTime.isBefore(startTime) ){
  endTime.add(1, 'day');
}

let timeStops = [];

while(startTime <= endTime){
  timeStops.push(moment(startTime).format('YYYY_M_DD_HH_MM'));
  startTime.subtract(15, 'minutes');
}

console.log(timeStops);

Проблема в том, что я получил пустой массив в журнале консоли.

Код ошибки:

moment.js:293 Deprecation warning: value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.
Arguments: 
[0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: YYYY_M_DD_HH_MM, _f: undefined, _strict: undefined, _locale: [object Object]
Error

1 Ответ

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

Вы используете неправильную строку format. «ММ» используется для месяца, «ММ» - для минут.

Также вот рабочий пример

Редактировать: цикл ограничения до 10

    const now = getRoundDate();

    const timeStops = [];

    for (let i = 0; i < 10; i++) {
      now.subtract(15, 'minutes');
      timeStops.push(now.format('YYYY_M_DD_HH_mm'));
    }

    console.log(timeStops);


    getRoundDate(): moment.Moment {
        const minutes = +moment().format('m');

        if (minutes >= 0 && minutes <= 8) return date.minutes(0);
        else if (minutes >= 9 && minutes <= 18) return date.minutes(15);
        else if (minutes >= 19 && minutes <= 38) return date.minutes(30);
        else if (minutes >= 39 && minutes <= 48) return date.minutes(45);
        else if (minutes >= 49) return date.minutes(0).add(1, 'hours')
    }
...