elsa-core/src/modules/Elsa.Scheduling/Services/CronosCronParser.cs

28 lines
779 B
C#
Raw Normal View History

using Cronos;
using Elsa.Common;
namespace Elsa.Scheduling.Services;
/// <summary>
/// A cron parser that uses Cronos.
/// </summary>
public class CronosCronParser : ICronParser
{
private readonly ISystemClock _systemClock;
/// <summary>
/// Initializes a new instance of the <see cref="CronosCronParser"/> class.
/// </summary>
public CronosCronParser(ISystemClock systemClock)
{
_systemClock = systemClock;
}
/// <inheritdoc />
public DateTimeOffset GetNextOccurrence(string expression)
{
var parsedExpression = CronExpression.Parse(expression, CronFormat.IncludeSeconds);
var now = _systemClock.UtcNow;
return parsedExpression.GetNextOccurrence(now, TimeZoneInfo.Utc).GetValueOrDefault();
}
}