Мне нужно задание cron для NodeJS, которое будет выполняться в 11:30 попеременно. Я искал, но получаю решения только на день, а не на каждый день.
Предлагается ChatGPT
const isAlternateDay = () => {
const today = new Date();
const day = today.getDate();
// For example, consider odd days as alternate days
return day % 2 !== 0;
};
// Schedule the cron job for 11:30 AM every day
cron.schedule('30 11 * * *', () => {
if (isAlternateDay()) {
console.info('Running cron job on an alternate day at 11:30 AM');
// Your task logic here
}
});Но я хочу сделать это, используя сам cron; Я не хочу добавлять внешнее условие.
(Нечетный/четный день года будет производить прогоны в соседние дни только один раз в году, исключая високосные годы.)
Я хочу запускать cron каждые 48 часов в 11:30.
Тем не менее, cron сам по себе не имеет для этого механизма; проверка самого задания и выход раньше, если сегодня не тот день, - это, безусловно, самое простое решение.
Межсайтовый дубликат: unix.stackexchange.com/questions/16093/…
Этот вопрос похож на: Как поручить cron выполнять задание каждую вторую неделю?. Если вы считаете, что это другое, отредактируйте вопрос, поясните, чем он отличается и/или как ответы на этот вопрос не помогают решить вашу проблему.
Я задаю вопрос, потому что мне нужен ответ на конкретную ситуацию, если вы можете дать, а затем, пожалуйста, отправьте свой ответ.
В вашем вопросе указано 11, но в вашем комментарии указано 11:30. Ваш комментарий, вероятно, будет проигнорирован большинством посетителей; отредактируйте вопрос, если он неверен.
У меня есть обновление, теперь вы можете видеть
Предлагаемый дубликат содержит ответы на вполне аналогичную ситуацию; от вас ожидается, что вы разберетесь в тонкостях его адаптации к вашему сценарию.





Чтобы запланировать задание cron, которое будет выполняться в разные дни в 11:30, вы можете использовать следующее выражение cron:
// Schedule a task to run alternative days at 11:30 AM
cron.schedule('30 11 */2 * *', () => {
console.info('Running a task alternative days at 11:30 AM');
});
Объяснение:
Нет, */2 указывает четные дни месяца; поэтому он будет запускаться каждые 3 дня, когда наступит 31-дневный (или 29-дневный) месяц.
Что вы подразумеваете под «альтернативными днями»? Если это должно означать «чередование», то согласны ли вы с нечетными/четными днями или вы конкретно имеете в виду каждые 48 часов, независимо от номеров дней в календаре?