原文地址:http://www.cnblogs.com/yaopengfei/p/8545777.html

背景介绍及其使用

  该章节主要补充介绍,在前一章四类触发器的基础上配合六大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号这天不执行)

 代码分享:

  1        public static void CalanderShow()
  2         {
  3             //1. 每天8-23点执行,每隔1s执行一次,但是21-22点这个区间不执行
  4             {
  5                 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
  6                 scheduler.Start();
  7                 //单独记录一个区间段 21-22点
  8                 DailyCalendar dailyCalendar = new DailyCalendar(DateBuilder.DateOf(21, 0, 0).DateTime,
  9                                                                 DateBuilder.DateOf(22, 0, 0).DateTime);
 10                 scheduler.AddCalendar("mycalendar", dailyCalendar, true, true);
 11
 12                 var job = JobBuilder.Create<HelloJob>().Build();
 13                 var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
 14                                                       x => x.OnEveryDay()
 15                                                           .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 00))
 16                                                           .EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(23, 00))
 17                                                           .WithIntervalInSeconds(1)
 18                                                                   )
 19                                                      .ModifiedByCalendar("mycalendar")
 20                                                      .Build();
 21                 scheduler.ScheduleJob(job, trigger);
 22             }
 23
 24             //2. 每天8-23点执行,每隔1s执行一次,但是周五这一天不执行
 25             {
 26                 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
 27                 scheduler.Start();
 28                 //设定周五不能执行
 29                 WeeklyCalendar calendar = new WeeklyCalendar();
 30                 calendar.SetDayExcluded(DayOfWeek.Friday, true);
 31                 scheduler.AddCalendar("mycalendar", calendar, true, true);
 32
 33                 var job = JobBuilder.Create<HelloJob>().Build();
 34                 var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
 35                                                       x => x.OnEveryDay()
 36                                                           .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 00))
 37                                                           .EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(23, 00))
 38                                                           .WithIntervalInSeconds(1)
 39                                                                   )
 40                                                      .ModifiedByCalendar("mycalendar")
 41                                                      .Build();
 42                 scheduler.ScheduleJob(job, trigger);
 43             }
 44
 45             //3. 每天8-23点执行,每隔1s执行一次,但是当年6月16号这一天不执行
 46             {
 47                 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
 48                 scheduler.Start();
 49                 HolidayCalendar calendar = new HolidayCalendar();
 50                 calendar.AddExcludedDate(DateTime.Parse("06-16"));    //把当年6月16日排除在外
 51
 52                 scheduler.AddCalendar("mycalendar", calendar, true, true);
 53                 var job = JobBuilder.Create<HelloJob>().Build();
 54                 var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
 55                                                       x => x.OnEveryDay()
 56                                                           .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 00))
 57                                                           .EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(23, 00))
 58                                                           .WithIntervalInSeconds(1)
 59                                                                   )
 60                                                      .ModifiedByCalendar("mycalendar")
 61                                                      .Build();
 62                 scheduler.ScheduleJob(job, trigger);
 63
 64             }
 65
 66             //4. 每天8-23点执行,每隔1s执行一次,但是每月的27号不执行
 67             {
 68                 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
 69                 scheduler.Start();
 70
 71                 //指定月份中的某一天不能执行
 72                 MonthlyCalendar calendar = new MonthlyCalendar();
 73                 calendar.SetDayExcluded(27, true);  //将27号这天排除在外
 74                 scheduler.AddCalendar("mycalendar", calendar, true, true);
 75
 76                 var job = JobBuilder.Create<HelloJob>().Build();
 77                 var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
 78                                                       x => x.OnEveryDay()
 79                                                           .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 00))
 80                                                           .EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(23, 00))
 81                                                           .WithIntervalInSeconds(1)
 82                                                                   )
 83                                                      .ModifiedByCalendar("mycalendar")
 84                                                      .Build();
 85
 86                 scheduler.ScheduleJob(job, trigger);
 87             }
 88
 89             //5. 每天8-23点执行,每隔1s执行一次,但是每年的6月16号这一天不执行
 90             {
 91                 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
 92                 scheduler.Start();
 93
 94                 AnnualCalendar calendar = new AnnualCalendar();
 95                 calendar.SetDayExcluded(DateTime.Parse("06-16"), true);  //把每年的6月16日排除在外
 96                 scheduler.AddCalendar("mycalendar", calendar, true, true);
 97
 98                 var job = JobBuilder.Create<HelloJob>().Build();
 99                 var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
100                                                       x => x.OnEveryDay()
101                                                           .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 00))
102                                                           .EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(23, 00))
103                                                           .WithIntervalInSeconds(1)
104                                                                   )
105                                                      .ModifiedByCalendar("mycalendar")
106                                                      .Build();
107                 scheduler.ScheduleJob(job, trigger);
108             }
109
110             //6.每天8-23点执行,每隔1s执行一次,但是2月27号这天不执行
111             {
112                 IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
113                 scheduler.Start();
114
115                 CronCalendar calendar = new CronCalendar("* * * 27 2 ?");
116                 scheduler.AddCalendar("mycalendar", calendar, true, true);
117
118                 var job = JobBuilder.Create<HelloJob>().Build();
119                 var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule(
120                                                       x => x.OnEveryDay()
121                                                           .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 00))
122                                                           .EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(23, 00))
123                                                           .WithIntervalInSeconds(1)
124                                                                   )
125                                                      .ModifiedByCalendar("mycalendar")
126                                                      .Build();
127                 scheduler.ScheduleJob(job, trigger);
128             }
129
130         }

 原文地址:http://www.cnblogs.com/yaopengfei/p/8545777.html

转载于:https://www.cnblogs.com/lichunting/articles/9262302.html

【转载】第6节: 六类Calander处理六种不同的时间场景相关推荐

  1. 第六节: 六类Calander处理六种不同的时间场景

    背景介绍及其使用 该章节主要补充介绍,在前一章四类触发器的基础上配合六大Canlander来动态删减某些时间,来满足更多的应用场景. 1. DailyCalendar:动态排除某天的某些字段. (需求 ...

  2. 六类布线六大注意事项

    六类布线系统在传输速率上可提供高于超五类2.5倍的高速带宽,在100MHz时高于超五类300%的ACR值.在施工安装方面,六类比超五类难度也要大很多. 六类布线系统的施工人员必须按照国际标准要求的规范 ...

  3. 怎么区分五类线、超五类线和六类线

    打个广告, ---------------------------------------------------------------------------------------------- ...

  4. CPU中的主要寄存器:有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)

    在CPU中至少要有六类寄存器:指令寄存器(IR).程序计数器(PC).地址寄存器(AR).数据寄存器(DR).累加寄存器(AC).程序状态字寄存器(PSW).这些寄存器用来暂存一个计算机字,其数目可以 ...

  5. 江西省中职计算机简答题,江西省中等职业学校第八届技能竞赛节计算机类专业竞赛模拟试题(CAD、CAM软件应用)...

    竞赛模拟试题 江西省中等职业学校第八届技能竞赛节计算机类专业竞赛模拟试题 一.计算机组装与调试 (一)能熟练规范地拆.装一部多媒体电脑.(提供电脑配件) (二)CMOS设置第一顺序光盘启动 (三)硬盘 ...

  6. 五类和六类网络的区别

    五类线的标识是"CAT5",带宽100M,适用于百兆以下的网:超五类线的标识是"CAT5E",带宽155M,是目前的主流产品:六类线的标识是" CAT ...

  7. 千兆网络中——使用五类线、超五类线和六类线的区别

    去年入手了一台Seagate的NAS,Central系列产品,3T存储空间.买回来后,一直没时间好好研究,直接插上就用了.内网速度一直维持在10M-15M左右.今年618换了款千兆路由器,速度瞬间提升 ...

  8. 超五类线制作六类交叉线

    两台服务器做双机,同步数据,需要一根六类交叉线.手上没有现成的,于是先用超五类制作一根临时用. 先用常规五类线交叉法,线序如下: 一端:12345678 另一端:36145278 上机测试,没有成功. ...

  9. 盏茶python(六) 类

    目录 1.为什么使用类 2.类的定义 2.1 类的命名 2.2 类的属性 2.3 类的方法 3.创建实例 3.1 实例的创建 3.2 访问属性 3.3 调用方法 3.4 属性修改 4.类的继承 4.1 ...

最新文章

  1. 很实用的Python运行提速方法
  2. Facebook Docusaurus 中文文档 安装指南
  3. 关于struts,spring,hibernate的几个问题
  4. Vue调用本地缓存(监视数据变更)
  5. jQuery标题文字淡入淡出显示效果
  6. Qt工程pro文件的简单配置(尤其是第三方头文件和库)
  7. 121. VLD 的使用
  8. python 抢红包 不越狱_这个Python脚本牛逼了,秒抢红包and无视撤回消息
  9. 海思平台35xx系列sensor不出图问题排查方法(新手来看)
  10. mysql binlog提取sql_导出mysqlbinlog语句
  11. RTKLIB源码调试.trace文件解析.stat文件解析
  12. 数据结构之图的基础知识(二)
  13. java生成word 框勾_Java根据word模板生成word文档之设计详细思路—word标签定义 | 学步园...
  14. stm32f103gd32的usb虚拟串口,打印类printer组合设备
  15. meta20 无法安装 google play_不ROOT不刷机,小米手机如何安装谷歌 GMS 三件套
  16. 每次阅读外文技术资料都头疼,终于知道原因了。
  17. 毕得医药递交科创板注册:年营收6亿 拟募资4.34亿
  18. 栈和队列以及线性表的区别
  19. 从一个不同角度看精准度与召回
  20. javaMail发送邮件读取流中的数据并作为作为附件发送邮件

热门文章

  1. 【100%通过率】华为OD机试真题 Java 实现【完美走位】【2022.11 Q4新题】
  2. 什么时候用到GDT?为什么要用GDT
  3. vue手把手教你实现论坛bbs——(二)创建组件
  4. GPS 入门 1 —— 基础知识
  5. C语言题目代码总结解析
  6. vue中时间格式2021-11-21T12:30:00.000+00:00转换yyyy-MM-dd HH:mm:ss
  7. mysql57压缩包安装教程
  8. 专访 | 刘嘉松:开源,互惠且共赢
  9. 台式计算机音频插口,解决台式机电脑机箱前置音频插口(接口)不能使用一例.
  10. 用快递100企业版接口(API)实现快递查询-Python