Получение даты и времени из формата cron с помощью javascript

#javascript #cron

#javascript #cron

Вопрос:

Кто-нибудь знает о каких-либо существующих решениях, использующих javascript, которые могут анализировать crontab и возвращать все экземпляры datetime между заданной начальной и конечной датой?

т.е. если у меня есть 0 * * * * начало 24/10/2011 16:00 и конец 24/10/2011 19:00 , то он вернется:

 24/10/2011 16:00,
24/10/2011 17:00,
24/10/2011 18:00
 

Комментарии:

1. Crontag? Tpyo [так в оригинале]? Вы хотите проанализировать «* */4 * * * *»- введите записи crontab и превратите их в реальные даты / время?

2. Добавление в @MarcB, … или диапазон дат / времени?

3. Как я понимаю, входные данные: startdate, enddate и строка crontab. Выводом должно быть точное время, когда команда crontab будет выполняться между двумя заданными датами.

4. Да, точно, т.е. если у меня есть 0 * * * * , начни 24/10/2011 16:00 и закончи 24/10/2011 19:00 , тогда он вернется 24/10/2011 16:00, 24/10/2011 17:00, 24/10/2011 18:00

5. Обновлен вопрос на основе комментария OP.

Ответ №1:

Возможно, вы захотите проверить Later.js который может анализировать выражение Cron и вычислять следующие вхождения.

 var schedule = cronParser().parse('* */5 * * * *', true);
var results = later(60).get(schedule, 100, startDate, endDate);
 

Комментарии:

1. в итоге я сам это написал, так что немного поздновато для меня, но выглядит неплохо! Спасибо

2. Это здорово, почему бы вам не поделиться этим в виде пакета?

3. var schedule = later.parse.cron('* */5 * * * *', true); var results = later.schedule(schedule).next(100, new Date('2016-01-25'), new Date('2016-02-25') )

4. Совместимо ли это с планировщиком Java quartz cron? Мой вариант использования — использовать совместимый планировщик, чтобы cron-выражение могло использоваться серверной или интерфейсной частью для получения вхождения.

Ответ №2:

Это не очень помогает, но это начало. Есть некоторые решения на java (не javascript) и php, в которых есть приличный код, который вы хотели бы перевести и включить, если вы в конечном итоге напишете это самостоятельно.

Взгляните на эти два фрагмента кода:

http://www.redmoon.ch/?p=39

http://www.phpclasses.org/package/2568-PHP-Parse-cron-tab-files-to-retrieve-job-schedules.html

HTH

Ответ №3:

Можно использовать cron-parser lib. Более подробная информация здесь