.NET 全能 Cron 表达式解析库,支持 Cron 所有特性

c9693cfec8ca3b90d0b60c0b25fbec9f.gif


本文简介

本文将为你介绍一款在 .NET 环境下功能全面的 Cron 表达式解析库——TimeCrontab。这个库不仅支持 Cron 的所有特性,还提供了易于使用的 API,帮助开发者轻松构建和管理定时任务。无论你是开发 Web 应用、后台服务还是桌面程序,TimeCrontab 都能满足你的需求,让你的定时任务更加高效和可靠。

在软件开发中,定时任务扮演着非常重要的角色。它们可以在特定的时间或周期性地执行一些操作,如发送邮件、清理缓存、更新数据等。而在 .NET 环境中,Cron 表达式是一种非常流行的定时任务配置方式。Cron 表达式具有简单易懂、功能强大的特点,可以帮助开发者快速地配置和管理定时任务。

然而,要在 .NET 环境下实现 Cron 表达式的解析和执行,往往需要花费一定的时间和精力。幸运的是,现在有一款名为 TimeCrontab 的全能 Cron 表达式解析库,可以大大简化这一过程。

TimeCrontab 是一款开源的 .NET 库,它提供了对 Cron 表达式的全面支持,包括分钟、小时、日期、月份和星期等各个字段的解析和执行。同时,TimeCrontab 还提供了一些额外的功能,如表达式的验证、表达式的格式化以及表达式的转换等。

1e639a4279f6c3cce825180778e4cd34.png

使用 TimeCrontab,你可以轻松地构建和管理定时任务。首先,你需要安装 TimeCrontab 库到你的项目中。然后,你可以使用库提供的 API 来创建和管理 Cron 表达式。这些 API 简单易用,即使是没有接触过 Cron 表达式的开发者也能快速上手。

除了易于使用外,TimeCrontab 还具有高度的灵活性和可扩展性。你可以根据自己的需求定制定时任务的执行策略,如并发执行、串行执行等。同时,TimeCrontab 还支持与其他 .NET 框架和库的集成,如 ASP.NET、Quartz.NET 等,使你的定时任务更加高效和可靠。

特性

  • • 支持 Cron 所有特性

  • • 超高性能

  • • 易拓展

  • • 很小,仅 4KB

  • • 无第三方依赖

  • • 跨平台

  • • 高质量代码和良好单元测试

  • • 支持 .NET Framework 3.5+ 及后续版本

安装

Install-Package TimeCrontab
dotnet add package TimeCrontab

快速入门

我们在主页上有不少例子,这是让您入门的第一个:

常规格式:分 时 天 月 周

var crontab = Crontab.Parse("* * * * *");
var nextOccurrence = crontab.GetNextOccurrence(DateTime.Now);

支持年份:分 时 天 月 周 年

var crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithYears);
var nextOccurrence = crontab.GetNextOccurrence(DateTime.Now);

支持秒数:秒 分 时 天 月 周

var crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithSeconds);
var nextOccurrence = crontab.GetNextOccurrence(DateTime.Now);

支持秒和年:秒 分 时 天 月 周 年

var crontab = Crontab.Parse("* * * * * * *", CronStringFormat.WithSecondsAndYears);
var nextOccurrence = crontab.GetNextOccurrence(DateTime.Now);

获取休眠差实现简单定时任务

// 阻塞方式
var crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithSeconds);
while(true)
{
    Thread.Sleep(crontab.GetSleepMilliseconds(DateTime.Now));
    Console.WriteLine(DateTime.Now.ToString("G"));
}

// 无阻塞方式
var crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithSeconds);
Task.Factory.StartNew(async () =>
{
    while (true)
    {
        await Task.Delay(crontab.GetSleepMilliseconds(DateTime.Now));
        Console.WriteLine(DateTime.Now.ToString("G"));
    }
}, TaskCreationOptions.LongRunning);

BackgroundService 实现简单定时任务

using TimeCrontab;

namespace WorkerService;

public class Worker : BackgroundService
{
    private readonly ILogger<Worker> _logger;

    private readonly Crontab _crontab;

    public Worker(ILogger<Worker> logger)
    {
        _logger = logger;
        _crontab = Crontab.Parse("* * * * * *", CronStringFormat.WithSeconds);
    }

    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            var taskFactory = new TaskFactory(System.Threading.Tasks.TaskScheduler.Current);

            await taskFactory.StartNew(async () =>
            {
                // 你的业务代码写到这里面

                _logger.LogInformation("Worker running at: {time}", DateTime.Now);

                await Task.CompletedTask;
            }, stoppingToken);

            await Task.Delay(_crontab.GetSleepMilliseconds(DateTime.Now), stoppingToken);
        }
    }
}

结语

总之,TimeCrontab 是一款功能全面、易于使用的 Cron 表达式解析库。它可以帮助你在 .NET 环境下快速构建和管理定时任务,提高你的开发效率和应用性能。如果你正在寻找一款优秀的 Cron 表达式解析库,那么 TimeCrontab 绝对是一个值得考虑的选择。

源码地址

https://gitee.com/dotnetchina/TimeCrontab

推荐阅读

欢迎扫描下方二维码加我的微信,获取更多技术解决方案并入群交流

a09773b956415b6364013c32beca0096.jpeg

版权声明:本文来源于网络素材收集整理或网友供稿,版权归版权所有者所有,如有侵权请联系小编予以删除

dabdd25a204e25c7abd6ed8e78e6249a.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java解析cron表达式,你可以使用cron-utils。首先,你需要将cron-utils添加到你的项目依赖中。根据引用的Maven配置,你可以将以下代码添加到你的pom.xml文件中: ``` <dependency> <groupId>com.cronutils</groupId> <artifactId>cron-utils</artifactId> <version>9.1.5</version> </dependency> ``` 引用中的代码展示了cron-utils中提供的CronType枚举类,它定义了不同的cron表达式类型,包括CRON4J、QUARTZ、UNIX和SPRING。 为了解析cron表达式,你可以使用CronParser类,如引用中的代码所示。首先,你需要创建一个CronParser对象,并使用CronDefinitionBuilder类的instanceDefinitionFor方法根据CronType.SPRING来定义cron表达式的语法。然后,你可以使用CronParser的parse方法将cron表达式字符串解析Cron对象。 接下来,你可以使用ExecutionTime类的forCron方法来获取给定cron表达式的执行时间。你可以使用ZonedDateTime类来表示时间,并使用ZonedDateTime.now()来获取当前时间。然后,你可以使用ExecutionTime的nextExecution方法来获取下一次执行的时间。引用中的代码使用循环来获取指定数量的执行时间,并将它们存储在一个列表中。 最后,你可以使用DateTimeFormatter类来格式化ZonedDateTime对象为所需的日期时间格式,并将格式化后的时间存储在另一个列表中。最后,你可以返回列表作为解析cron表达式后的执行时间。 总结起来,这是解析cron表达式的基本步骤: 1. 添加cron-utils依赖到你的项目中,参考引用中的Maven配置。 2. 创建一个CronParser对象,并使用CronDefinitionBuilder类的instanceDefinitionFor方法定义cron表达式的语法。 3. 使用CronParser的parse方法将cron表达式字符串解析Cron对象。 4. 创建一个ExecutionTime对象,并使用forCron方法获取给定cron表达式的执行时间。 5. 创建一个ZonedDateTime对象来表示时间,并使用ZonedDateTime.now()获取当前时间。 6. 使用ExecutionTime的nextExecution方法获取下一次执行的时间,并将其存储在一个列表中。 7. 使用DateTimeFormatter类来格式化ZonedDateTime对象为所需的日期时间格式,并将格式化后的时间存储在另一个列表中。 8. 返回列表作为解析cron表达式后的执行时间。 希望这个解答对你有帮助。如果你有任何其他问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值