TimeCrontab .NET 全能 Cron 表达式解析库开源项目

我要开发同款
匿名用户2021年11月02日
126阅读

技术信息

开源地址
https://gitee.com/dotnetchina/TimeCrontab
授权协议
Mulan

作品详情

TimeCrotab是.NET全能Cro表达式解析库,支持Cro完整特性。

 

特性支持Cro所有特性超高性能易拓展很小,仅 4KB无第三方依赖跨平台高质量代码和良好单元测试支持 .NETFramework3.5+ 及后续版本安装PackageMaagerIstall-PackageTimeCrotab.NETCLIdotetaddpackageTimeCrotab快速入门我们在主页上有不少例子,这是让您入门的第一个:

常规格式:分时天月周

varcrotab=Crotab.Parse("*****");varextOccurrece=crotab.GetNextOccurrece(DateTime.Now);支持年份:分时天月周年

varcrotab=Crotab.Parse("******",CroStrigFormat.WithYears);varextOccurrece=crotab.GetNextOccurrece(DateTime.Now);支持秒数:秒分时天月周

varcrotab=Crotab.Parse("******",CroStrigFormat.WithSecods);varextOccurrece=crotab.GetNextOccurrece(DateTime.Now);支持秒和年:秒分时天月周年

varcrotab=Crotab.Parse("*******",CroStrigFormat.WithSecodsAdYears);varextOccurrece=crotab.GetNextOccurrece(DateTime.Now);获取休眠差实现定时任务

//阻塞方式varcrotab=Crotab.Parse("******",CroStrigFormat.WithSecods);while(true){Thread.Sleep(crotab.GetSleepMillisecods(DateTime.UtcNow));Cosole.WriteLie(DateTime.Now.ToStrig("G"));}//无阻塞方式varcrotab=Crotab.Parse("******",CroStrigFormat.WithSecods);Task.Factory.StartNew(asyc()=>{while(true){awaitTask.Delay(crotab.GetSleepMillisecods(DateTime.UtcNow));Cosole.WriteLie(DateTime.Now.ToStrig("G"));}},TaskCreatioOptios.LogRuig);BackgroudService 实现定时任务

usigTimeCrotab;amespaceWorkerService;publicclassWorker:BackgroudService{privatereadolyILogger<Worker>_logger;privatereadolyCrotab_crotab;publicWorker(ILogger<Worker>logger){_logger=logger;_crotab=Crotab.Parse("******",CroStrigFormat.WithSecods);}protectedoverrideasycTaskExecuteAsyc(CacellatioTokestoppigToke){while(!stoppigToke.IsCacellatioRequested){vartaskFactory=ewTaskFactory(System.Threadig.Tasks.TaskScheduler.Curret);awaittaskFactory.StartNew(asyc()=>{//你的业务代码写到这里面_logger.LogIformatio("Workerruigat:{time}",DateTimeOffset.Now);awaitTask.CompletedTask;},stoppigToke);awaitTask.Delay(_crotab.GetSleepMillisecods(DateTime.UtcNow),stoppigToke);}}}Macro标识符

varsecodly=Crotab.Secodly;//每秒varmiutely=Crotab.Miutely;//每分钟varhourly=Crotab.Hourly;//每小时vardaily=Crotab.Daily;//每天00:00:00varmothly=Crotab.Mothly;//每月1号00:00:00varweekly=Crotab.Weekly;//每周日00:00:00varyearly=Crotab.Yearly;//每年1月1号00:00:00更多文档

文档您可以在主页找到TimeCrotab文档。

测试publicclassTimeCrotabUitTests{[Theory][IlieData("*****","*****",CroStrigFormat.Default)][IlieData("0031W**","0031W**",CroStrigFormat.Default)][IlieData("023?*MON-FRI","023?*1-5",CroStrigFormat.Default)][IlieData("*/5****","*/5****",CroStrigFormat.Default)][IlieData("3011**1-5","3011**1-5",CroStrigFormat.Default)][IlieData("2312*JAN*","2312*1*",CroStrigFormat.Default)][IlieData("****MON#3","****1#3",CroStrigFormat.Default)][IlieData("*/5*LJAN*","*/5*L1*",CroStrigFormat.Default)][IlieData("00?1MON#1","00?11#1",CroStrigFormat.Default)][IlieData("00LW**","00LW**",CroStrigFormat.Default)][IlieData("03010-13?*WED,FRI","03010-13?*3,5",CroStrigFormat.WithSecods)][IlieData("0*/5****","0*/5****",CroStrigFormat.WithSecods)][IlieData("00/1***?","0*/1***?",CroStrigFormat.WithSecods)][IlieData("5-1030-3510-12***","5-1030-3510-12***",CroStrigFormat.WithSecods)]publicvoidTestParse(strigexpressio,strigoutputStrig,CroStrigFormatformat){varoutput=Crotab.Parse(expressio,format).ToStrig();Assert.Equal(outputStrig,output);}[Theory][IlieData("*****","2021-01-0100:01:00",CroStrigFormat.Default)][IlieData("0031W**","2021-01-2900:00:00",CroStrigFormat.Default)][IlieData("023?*MON-FRI","2021-01-0123:00:00",CroStrigFormat.Default)][IlieData("*/5****","2021-01-0100:05:00",CroStrigFormat.Default)][IlieData("3011**1-5","2021-01-0111:30:00",CroStrigFormat.Default)][IlieData("2312*JAN*","2021-01-0112:23:00",CroStrigFormat.Default)][IlieData("****MON#3","2021-01-1800:00:00",CroStrigFormat.Default)][IlieData("*/5*LJAN*","2021-01-3100:00:00",CroStrigFormat.Default)][IlieData("00?1MON#1","2021-01-0400:00:00",CroStrigFormat.Default)][IlieData("00LW**","2021-01-2900:00:00",CroStrigFormat.Default)][IlieData("03010-13?*WED,FRI","2021-01-0110:30:00",CroStrigFormat.WithSecods)][IlieData("0*/5****","2021-01-0100:05:00",CroStrigFormat.WithSecods)][IlieData("00/1***?","2021-01-0100:01:00",CroStrigFormat.WithSecods)][IlieData("5-1030-3510-12***","2021-01-0110:30:05",CroStrigFormat.WithSecods)]publicvoidTestGetNextOccurece(strigexpressio,strigextOccureceStrig,CroStrigFormatformat){varbegiTime=ewDateTime(2021,1,1,0,0,0);varcrotab=Crotab.Parse(expressio,format);varextOccurece=crotab.GetNextOccurrece(begiTime);Assert.Equal(extOccureceStrig,extOccurece.ToStrig("yyyy-MM-ddHH

功能介绍

TimeCrontab 是 .NET 全能 Cron 表达式解析库,支持 Cron 完整特性。 特性 支持 Cron 所有特性 超高性能 易拓展 很小,仅 4KB 无第三方依赖 跨平台 高质量代...

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论