certimate/ui/src/utils/cron.ts
2025-03-07 00:18:39 +08:00

22 lines
611 B
TypeScript

import { CronExpressionParser } from "cron-parser";
export const validCronExpression = (expr: string): boolean => {
try {
CronExpressionParser.parse(expr);
if (expr.trim().split(" ").length !== 5) return false; // pocketbase 后端仅支持五段式的表达式
return true;
} catch {
return false;
}
};
export const getNextCronExecutions = (expr: string, times = 1): Date[] => {
if (!validCronExpression(expr)) return [];
const now = new Date();
const cron = CronExpressionParser.parse(expr, { currentDate: now });
return cron.take(times).map((date) => date.toDate());
};