Later.js не получает следующую дату-время выражения cron

Я использую библиотеку позже.js, чтобы получить значение в следующем datetime из выражения cron. Но результат 5 раз следующий не является неправильным со временем по умолчанию ("16.07.2015, 10:44:47"). Этот результат является отклонением "час". это мой код

<script src="../later.min.js" type="text/javascript"></script>
<script>
var cron = "0 0/10 7,8,9,10,11,13,14,15,16,17,18 ? 1/1 1-5 *";

var d = new Date("7/16/2015 10:44:47");
later.date.timezone(true);
var sched = later.parse.cron(cron, true);

var results = later.schedule(sched).next(5,d);
for (var i = 0; i < results.length; i++) {
    document.write('<p>' + results[i].toLocaleString() + '</p>');
}
</script>

результат неверен:

14:00:00 16/7/2015

14:10:00 16/7/2015

14:20:00 16/7/2015

14:30:00 16/7/2015

14:40:00 16/7/2015

Результат правильно используйте http://www.cronmaker.com/ для проверки:

  1. 16 июля 2015 г., четверг, 10:50
  2. Четверг, 16 июля 2015 г., 11:00
  3. Четверг, 16 июля 2015 г., 11:10
  4. Четверг, 16 июля 2015 г., 11:20
  5. Четверг, 16 июля 2015 г., 11:30

1 ответ

Решение

Я нашел ответ на свой вопрос. Поэтому выкладываю решение для ссылки.

В файле Later.js есть функция itemSorter (строка 999). эта функция сортирует массив из выражения кадрирования (после того, как он разделил '' и ',').

function itemSorter(a, b) {
    return isHash(a) && !isHash(b) ? 1 : 0;
}

Измените эту функцию на:

  function itemSorter(a, b) {
        if (isNaN(a) || isNaN(b)) {
            return a > b ? 1 : -1;
        }
        return a - b;
    }

Если у вас нет Later.js, вы можете скачать с URL: https://github.com/bunkat/later.

Другие вопросы по тегам