背景介绍及其使用

  该章节主要补充介绍,在前一章四类触发器的基础上配合六大Canlander来动态删减某些时间,来满足更多的应用场景。

1. DailyCalendar:动态排除某天的某些字段.

(需求:每天8-23点执行,每隔1s执行一次,但是21-22点这个区间不执行)

2. WeeklyCalendar:适合在星期几的维度上做“减法操作”

(需求:每天8-23点执行,每隔1s执行一次,但是周五这一天不执行)

3. HolidayCalendar:适合当年的某一天不能执行

(需求:每天8-23点执行,每隔1s执行一次,但是今年的6月16号这一天不执行)

4. MonthlyCalendar:适合某个月中的某一天不能执行

(需求:每天8-23点执行,每隔1s执行一次,但是每月的27号不执行)

5. AnnualCalendar:适合每年指定的某一天不能执行(有问题)

(需求:每天8-23点执行,每隔1s执行一次,但是每年的6月16号这一天不执行)

6. CronCalendar:字符串表达式来排除某一天,某一个月份,某一年都可以

(需求:每天8-23点执行,每隔1s执行一次,但是2月27号这天不执行)

 代码分享:

        public static void CalanderShow()
{
//1. 每天8-23点执行,每隔1s执行一次,但是21-22点这个区间不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
//单独记录一个区间段 21-22点
DailyCalendar dailyCalendar = new DailyCalendar(DateBuilder.DateOf(, , ).DateTime,
DateBuilder.DateOf(, , ).DateTime);
scheduler.AddCalendar("mycalendar", dailyCalendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger);
} //2. 每天8-23点执行,每隔1s执行一次,但是周五这一天不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
//设定周五不能执行
WeeklyCalendar calendar = new WeeklyCalendar();
calendar.SetDayExcluded(DayOfWeek.Friday, true);
scheduler.AddCalendar("mycalendar", calendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger);
} //3. 每天8-23点执行,每隔1s执行一次,但是当年6月16号这一天不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start();
HolidayCalendar calendar = new HolidayCalendar();
calendar.AddExcludedDate(DateTime.Parse("06-16")); //把当年6月16日排除在外 scheduler.AddCalendar("mycalendar", calendar, true, true);
var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger); } //4. 每天8-23点执行,每隔1s执行一次,但是每月的27号不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start(); //指定月份中的某一天不能执行
MonthlyCalendar calendar = new MonthlyCalendar();
calendar.SetDayExcluded(, true); //将27号这天排除在外
scheduler.AddCalendar("mycalendar", calendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build(); scheduler.ScheduleJob(job, trigger);
} //5. 每天8-23点执行,每隔1s执行一次,但是每年的6月16号这一天不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start(); AnnualCalendar calendar = new AnnualCalendar();
calendar.SetDayExcluded(DateTime.Parse("06-16"), true); //把每年的6月16日排除在外
scheduler.AddCalendar("mycalendar", calendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger);
} //6.每天8-23点执行,每隔1s执行一次,但是2月27号这天不执行
{
IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
scheduler.Start(); CronCalendar calendar = new CronCalendar("* * * 27 2 ?");
scheduler.AddCalendar("mycalendar", calendar, true, true); var job = JobBuilder.Create<HelloJob>().Build();
var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
x => x.OnEveryDay()
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(, ))
.WithIntervalInSeconds()
)
.ModifiedByCalendar("mycalendar")
.Build();
scheduler.ScheduleJob(job, trigger);
} }

第六节: 六类Calander处理六种不同的时间场景的更多相关文章

  1. 第九节: 利用RemoteScheduler实现Sheduler的远程控制 第八节: Quartz.Net五大构件之SimpleThreadPool及其四种配置方案 第六节: 六类Calander处理六种不同的时间场景 第五节: Quartz.Net五大构件之Trigger的四大触发类 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联

    第九节: 利用RemoteScheduler实现Sheduler的远程控制   一. RemoteScheduler远程控制 1. 背景: 在A服务器上部署了一个Scheduler,我们想在B服务器上 ...

  2. 第四百零六节,自定义用户表类来继承Django的用户表类,

    第四百零六节,自定义用户表类来继承Django的用户表类, models.py from django.db import models # Create your models here. from ...

  3. ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪

    ASP.NET MVC深入浅出(被替换)   一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...

  4. Java基础知识二次学习--第六章 常用类

    第六章 常用类   时间:2017年4月26日16:14:49~2017年4月26日16:56:02 章节:06章_01节~06章_06节 视频长度:20:57+1:15+8:44+1:26+11:2 ...

  5. delphi 线程教学第六节:TList与泛型

    第六节: TList 与泛型   TList 是一个重要的容器,用途广泛,配合泛型,更是如虎添翼. 我们先来改进一下带泛型的 TList 基类,以便以后使用. 本例源码下载(delphi XE8版本) ...

  6. 第四百一十六节,Tensorflow简介与安装

    第四百一十六节,Tensorflow简介与安装 TensorFlow是什么 Tensorflow是一个Google开发的第二代机器学习系统,克服了第一代系统DistBelief仅能开发神经网络算法.难 ...

  7. 第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件

    第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件 设置后台列表页面字段统计 在当前APP里的adminx.py文件里的数据表管理器里设置 ag ...

  8. 第三百四十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—Requests请求和Response响应介绍

    第三百四十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—Requests请求和Response响应介绍 Requests请求 Requests请求就是我们在爬虫文件写的Requests() ...

  9. NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译

    NHibernate.3.0.Cookbook第一章第六节Handling versioning and concurrency的翻译   第一章第二节Mapping a class with XML ...

随机推荐

  1. SQLServer删除数据

    使用SSMS删除数据 1.连接数据库.选择数据表->右键点击,选择所有行(或者选择前200行). 2.在数据窗口中选择数据行(注意点击最左边列选择整个数据行)->在最左侧右键点击-> ...

  2. LeetCode算法题-Keyboard Row(Java实现)

    这是悦乐书的第245次更新,第258篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第112题(顺位题号是500).给定一个单词列表,返回可以在美国键盘的一行上使用字母表键 ...

  3. Too many open files问题解决

    项目运行过程出现如下问题 经查询,找出原因,并进行解决 具体原因如下: too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多, ...

  4. SDOI2019R1游记

    差点退役,真是开心 Day -2 吐了一晚上,差点死掉 被拉去医院打针,结果蛇皮的被扎了两针,真是好疼啊嘤嘤嘤 决定第二天在家里咕一天 Day -1 结果在家里也得做\(loli\)昨天的不知道从哪里 ...

  5. 好程序员web前端开发测验之css部分

    好程序员web前端开发测验之css部分Front End Web Development Quiz CSS 部分问题与解答 Q: CSS 属性是否区分大小写? <p><font si ...

  6. [LeetCode] 3. 无重复字符的最长子串

    题目链接:(https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) 题目描述: 给定一个字符 ...

  7. 基于SpringBoot搭建应用开发框架(二) —— 登录认证

    零.前言 本文基于<基于SpringBoot搭建应用开发框架(一)——基础架构>,通过该文,熟悉了SpringBoot的用法,完成了应用框架底层的搭建. 在开始本文之前,底层这块已经有了很 ...

  8. redis从入门到高可用 Redis复制的原理与优化

    需要的联系我,QQ:1844912514

  9. vue中使用Base64和md5和rsa

    https://blog.csdn.net/benben513624/article/details/88113459(copy) https://www.cnblogs.com/myfate/p/1 ...

  10. safari打开的页面数字识别变为蓝色

    今天网页碰到一个很怪异的问题:app打开的一个网页样式是好的,但通过safari打开后数字的颜色变为蓝色,并且还变得可点击了! 原来safari总会把长串数字识别为电话号码,文字变成蓝色,点击还会弹出 ...