簡體   English   中英

從 CRON 表達式中獲取分鍾數 (c#)

[英]Get minutes from CRON expression (c#)

我試圖找到一種方法,如何從 CRON 表達式中獲取特定值。

例如,我有這個 CRON 表達式"*/5 * * * *" ,我需要得到分鍾。 結果必須是 5。我發現它是使用 NCrontab 庫的示例。 它顯示了如何獲取時間表:

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

有沒有辦法解決這個問題?

如果您只需要幾分鍾,則不需要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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM