[英]Get minutes from CRON expression (c#)
I'm trying to find a way how to get a specific value from a CRON expression.我试图找到一种方法,如何从 CRON 表达式中获取特定值。
Eg I have this CRON expression "*/5 * * * *"
and I need to get minutes.例如,我有这个 CRON 表达式"*/5 * * * *"
,我需要得到分钟。 The result must be 5. All I found it's example of usage NCrontab library.结果必须是 5。我发现它是使用 NCrontab 库的示例。 It shows how to get schedule:它显示了如何获取时间表:
var schedule = CrontabSchedule.Parse("*/5 * * * *");
Is there any way to solve this problem?有没有办法解决这个问题?
If you simply need the minutes, you shouldn't need the NCrontab library. 如果您只需要几分钟,则不需要NCrontab库。 You can parse this simple enough yourself. 您可以自己解析足够简单的内容。
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());
I use regular expressions.我使用正则表达式。 Try this:试试这个:
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)
);
Code Reference: https://github.com/rashadrivera/CronExpression/blob/master/CronExpression/Internals/CronExpressionHelper.cs代码参考: https : //github.com/rashadrivera/CronExpression/blob/master/CronExpression/Internals/CronExpressionHelper.cs
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.