菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

.net Core Cron 表达式计算接下来10次运行时间

6587人阅读 2022/6/20 11:36 总访问:1019276 评论:0 收藏:1 手机
分类: .net core

前言

项目中只要用到了定时器,那么一定离不开Cron 表达式

下边是表达式的一下规则

 在表达式中可以填写数字常量,也可以使用一些特殊符号创建更为复杂的任务

    逗号 (',') 分开的值,例如:“1,3,4,7,8”                                                                                                             (* * * * * *) 《--corn表达式

    连词符 ('-') 制定值的范围,例如:“1-6”,意思等同于“1,2,3,4,5,6”                                                                         第一个* :秒(0-59)  , - * / 

    星号 ('*') 代表任何可能的值。例如,在“小时域” 里的星号等于是“每一个小时”,等等                                                     第二个* :分钟(0-59) , - * / 

    斜线 ('/') 用于表示跳过某些给定的数。例如,“*/3”在小时域中等于“0,3,6,9,12,15,18,21”等被3整除的数                        第三个* :小时(0-23) , - * / 

    问号 ('?') 只能用在日和周域上,但是不能在这两个域上同时使用。                                                                            第四个* :日(1-31) ,- * ? / L W C

                                                                                                                                                                    第五个* :月(1-12) , - * /

    一些例子:                                                                                                                                                   第六个* :星期(1-7)(星期日=1) , - * /

    "0 0 12 * * ?" 每天12点触发                                                                                                                         第七个*(可选,留空) :年(1970-2099) , - * /

    "0 5 10 * * ?" 每天10:05触发

    "0 0 10,14,16 * * ?" 每天10点、14点、16点触发

    "0 0/30 9-17 * * ?"   每天9-17点每间隔半小时触发 

    "0 0 12 ? * 3" 表示每个星期二12点触发

    "0 * 14 * * ?" 在每天14点到14:59期间的每1分钟触发

    "0 0/5 14 * * ?" 在每天14点到14:55期间的每5分钟触发

获取接下来10 次运行时间

  1.  public string getCronStr(string cronStr, int number = 10)
  2.         {
  3.            //默认获取10次
  4.             if (number==0)
  5.             {
  6.                 number = 10;
  7.             }
  8.             CronTriggerImpl cron = new CronTriggerImpl("name""group", cronStr);
  9.             //设置本地时间开始时间
  10.             ICalendar calendar = new BaseCalendar(TimeZoneInfo.Local);
  11.             //获取10次执行时间 返回值是IReadOnlyList<DateTimeOffset>
  12.             var arrayList = TriggerUtils.ComputeFireTimes(cron, calendar , number);
  13.             //不能直接取默认值,默认值的时间是UTC的时间,要取 LocalDateTime
  14.             List<DateTime> times = new List<DateTime>();
  15.             foreach (var item in arrayList)
  16.             {
  17.                 times.Add(item.LocalDateTime);
  18.             }
  19.             //返回 LocalDateTime
  20.             return times.ToJson();
  21.         }

不要取默认时间,这是一个大坑

评价

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

NPOI操作excel 2007/2010版本

HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xlsXSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx先...

C经典面试题100道

1..NET和C#有什么区别答:.NET一般指.NETFrameWork框架,它是一种平台,一种技术。C#是一种编程语言,可以基于.NET平台的应...

让IIS支持webp格式图片让IIS支持vtt格式,iis设置mime类型,iis配置支持的类型

webp格式图片可以让图片体积变小。也让下载图片变得更加困难一点 在线制作webp工具 https://www.upyun.com/webp?utm_mediu...

网页上传文件断点续传的实现,无视文件大小上传,以及datatables基本用法

首先明白js是客户带执行代码,c#是服务器上执行代码。本地文件需要用到js处理,服务器端接受c#代码处理1.HTML页面,文件信...

DIV+CSS网页布局常用的一些基础知识整理

一.文件命名规范全局样式:global.css;框架布局:layout.css;字体样式:font.css;链接样式:link.css;打印样式:print...

该用 Java 12 还是坚持 Java 11?

搭上火箭也追不上的 Java 更新速度,不少程序员们大呼,我可不可以坚持使用 Java 8?!但是对于已使用到 LTS 版本的 Java 1...

Service-stack.redis配置连接池与读写分离(处理并发相关等)

配置连接池与读写分类 //写节点(主节点) List&lt;string&gt;writes=newList&lt;string&gt;(); writes.Add(&quot;123456a...

Service-stack.redis操作Redis 并发相关问题

1:不要循环去创建对象,循环去访问redis的时候要特别注意,应该传一个集合进去处理,而不是循环去处理2:要注意释放对象,使...

来!!!今天玩 json

别怪我懒,其实我是真的懒///&lt;summary&gt; ///List转成json ///&lt;/summary&gt; ///&lt;typeparamname=&quot;T&quot...

MySQL主从复制+读写分离

使用Mysql读写分离和主从复制的原因:*单台MySQL服务器的安全性,高可用性,高并发都是不满足实际的生产需要。介绍:1.MySQ...

windows 自带的netsh进行端口映射

使用netsh 把本地任意ip的25566端口 映射到192.168.81.234的25565端口netshinterfaceportproxyaddv4tov4listenaddress=0.0....

皓月有趣论题 - U盘或其他存储设备 存入数据后 质量是否发生改变

转自我的个人博客 http://blog.axibug.com之前、朋友提出“U盘或其他存储设备 存入数据后 质量是否发生改变”的问题。那么...

异步线程轮询的demo

创建一个控制台应用程序,代码如下:usingSystem; usingSystem.Threading; namespaceConsoleApplication1 { publicdele...

ASP.net 使用Redis实现单点登录

Session介绍 session是用来记录客户端用户信息的,在客户端第一次向服务器发起请求的时候服务器会生成一个sessionid并返回...