【问题标题】:Get minutes from CRON expression (c#)从 CRON 表达式中获取分钟数(c#)
【发布时间】:2022-01-05 13:22:32
【问题描述】:

我正在尝试找到一种从 CRON 表达式中获取特定值的方法。

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

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

有没有办法解决这个问题?

【问题讨论】:

    标签: c# cron


    【解决方案1】:

    如果您只需要分钟,则不需要 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());
    

    【讨论】:

      【解决方案2】:

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

      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

      【讨论】:

        猜你喜欢
        • 2017-07-21
        • 2021-09-03
        • 2012-10-23
        • 1970-01-01
        • 2022-01-23
        • 1970-01-01
        • 2023-04-01
        • 2016-10-08
        • 2018-06-04
        相关资源
        最近更新 更多