从CRON表达式(c#)中获取分钟

本文关键字:获取 取分钟 CRON 表达式 | 更新日期: 2023-09-27 18:07:08

我想找到一种方法,如何从一个CRON表达式获得一个特定的值。

。我有这个CRON表达"*/5 * * * *",我需要得到分钟。结果必须是5。我发现这是使用NCrontab库的例子。它展示了如何获取schedule:

var schedule = CrontabSchedule.Parse("*/5 * * * *");

有办法解决这个问题吗?

从CRON表达式(c#)中获取分钟

如果您只是需要记录,则不应该需要NCrontab库。您可以自己简单地解析它。

var expression = "*/5 * * * *";
var split = expression.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
if (split.Length < 5)
    throw new Exception("Invalid CRON expression");
var onlyDigits = "0123456789";
// strip non numeric chars
var minutes = new string(split[0].Where(c => onlyDigits.Contains(c)).ToArray());

我使用正则表达式。试试这个:

internal static Match GetExpressionRegex(string expression)
        => Regex.Match(
            expression,
            "(?<Minutes>[0-9*,/-]+) (?<Hours>[0-9*,/-]+) (?<Days>[0-9*,/-]+) (?<Month>[0-9*,/''-a-z]+) (?<DayOfWeek>[0-9*,/''-a-z]+)",
            RegexOptions.Singleline,
            TimeSpan.FromSeconds(0.2)
        );

代码参考:https://github.com/rashadrivera/CronExpression/blob/master/CronExpression/Internals/CronExpressionHelper.cs