【转载】第6节: 六类Calander处理六种不同的时间场景
原文地址: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处理六种不同的时间场景相关推荐
- 第六节: 六类Calander处理六种不同的时间场景
背景介绍及其使用 该章节主要补充介绍,在前一章四类触发器的基础上配合六大Canlander来动态删减某些时间,来满足更多的应用场景. 1. DailyCalendar:动态排除某天的某些字段. (需求 ...
- 六类布线六大注意事项
六类布线系统在传输速率上可提供高于超五类2.5倍的高速带宽,在100MHz时高于超五类300%的ACR值.在施工安装方面,六类比超五类难度也要大很多. 六类布线系统的施工人员必须按照国际标准要求的规范 ...
- 怎么区分五类线、超五类线和六类线
打个广告, ---------------------------------------------------------------------------------------------- ...
- CPU中的主要寄存器:有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)
在CPU中至少要有六类寄存器:指令寄存器(IR).程序计数器(PC).地址寄存器(AR).数据寄存器(DR).累加寄存器(AC).程序状态字寄存器(PSW).这些寄存器用来暂存一个计算机字,其数目可以 ...
- 江西省中职计算机简答题,江西省中等职业学校第八届技能竞赛节计算机类专业竞赛模拟试题(CAD、CAM软件应用)...
竞赛模拟试题 江西省中等职业学校第八届技能竞赛节计算机类专业竞赛模拟试题 一.计算机组装与调试 (一)能熟练规范地拆.装一部多媒体电脑.(提供电脑配件) (二)CMOS设置第一顺序光盘启动 (三)硬盘 ...
- 五类和六类网络的区别
五类线的标识是"CAT5",带宽100M,适用于百兆以下的网:超五类线的标识是"CAT5E",带宽155M,是目前的主流产品:六类线的标识是" CAT ...
- 千兆网络中——使用五类线、超五类线和六类线的区别
去年入手了一台Seagate的NAS,Central系列产品,3T存储空间.买回来后,一直没时间好好研究,直接插上就用了.内网速度一直维持在10M-15M左右.今年618换了款千兆路由器,速度瞬间提升 ...
- 超五类线制作六类交叉线
两台服务器做双机,同步数据,需要一根六类交叉线.手上没有现成的,于是先用超五类制作一根临时用. 先用常规五类线交叉法,线序如下: 一端:12345678 另一端:36145278 上机测试,没有成功. ...
- 盏茶python(六) 类
目录 1.为什么使用类 2.类的定义 2.1 类的命名 2.2 类的属性 2.3 类的方法 3.创建实例 3.1 实例的创建 3.2 访问属性 3.3 调用方法 3.4 属性修改 4.类的继承 4.1 ...
最新文章
- 很实用的Python运行提速方法
- Facebook Docusaurus 中文文档 安装指南
- 关于struts,spring,hibernate的几个问题
- Vue调用本地缓存(监视数据变更)
- jQuery标题文字淡入淡出显示效果
- Qt工程pro文件的简单配置(尤其是第三方头文件和库)
- 121. VLD 的使用
- python 抢红包 不越狱_这个Python脚本牛逼了,秒抢红包and无视撤回消息
- 海思平台35xx系列sensor不出图问题排查方法(新手来看)
- mysql binlog提取sql_导出mysqlbinlog语句
- RTKLIB源码调试.trace文件解析.stat文件解析
- 数据结构之图的基础知识(二)
- java生成word 框勾_Java根据word模板生成word文档之设计详细思路—word标签定义 | 学步园...
- stm32f103gd32的usb虚拟串口,打印类printer组合设备
- meta20 无法安装 google play_不ROOT不刷机,小米手机如何安装谷歌 GMS 三件套
- 每次阅读外文技术资料都头疼,终于知道原因了。
- 毕得医药递交科创板注册:年营收6亿 拟募资4.34亿
- 栈和队列以及线性表的区别
- 从一个不同角度看精准度与召回
- javaMail发送邮件读取流中的数据并作为作为附件发送邮件
热门文章
- 【100%通过率】华为OD机试真题 Java 实现【完美走位】【2022.11 Q4新题】
- 什么时候用到GDT?为什么要用GDT
- vue手把手教你实现论坛bbs——(二)创建组件
- GPS 入门 1 —— 基础知识
- C语言题目代码总结解析
- vue中时间格式2021-11-21T12:30:00.000+00:00转换yyyy-MM-dd HH:mm:ss
- mysql57压缩包安装教程
- 专访 | 刘嘉松:开源,互惠且共赢
- 台式计算机音频插口,解决台式机电脑机箱前置音频插口(接口)不能使用一例.
- 用快递100企业版接口(API)实现快递查询-Python