工作中需要做一个简易的Cron字符串生成器,并且要获取生成的Cron后面10次的触发时间来验证。

此问题困扰了我很久时间,CSDN上有一个Java版本的,本人菜鸟,想移植到C#中,语法上怎么也不通过。其它中文网站根本搜不到,最终在一个老外网站帮助下,搞定了这个问题。并且研究出了两个方法,小佩服一下我自己。

方法一:

     /// <summary>
/// 测试Cron字符串的正确性并给出8次执行的时间
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnTest_Click(object sender, EventArgs e)
{
if (!Quartz.CronExpression.IsValidExpression(txtCron.Text))//验证Cron字符串的正确性
{
txtResult.Text = "不正确的Cron表达式:" + txtCron.Text;
return;
}
txtResult.Text = "";
ITrigger trigger = TriggerBuilder.Create()
.WithCronSchedule(txtCron.Text) //时间表达式
.Build(); DateTimeOffset origin = new DateTimeOffset(DateTime.Now);
DateTimeOffset end = origin.AddYears();//把统计的区间段设置为2年后
//DateTimeOffset? dt = trigger.GetNextFireTimeUtc();//下一次执行的时间
IList<DateTimeOffset> dates = TriggerUtils.ComputeFireTimesBetween(trigger as IOperableTrigger, null, origin, end);
//trigger as IOperableTrigger注意这一句非常关键
for (int i = ; i < ; i++)
{
txtResult.AppendText("第" + (i + ) + "次执行的时间:" + dates[i].ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") + "\r\n");
}
}

方法二:

     /// <summary>
/// 测试Cron字符串的正确性并给出8次执行的时间
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnTest_Click(object sender, EventArgs e)
{
if (!Quartz.CronExpression.IsValidExpression(txtCron.Text))//验证Cron字符串的正确性
{
txtResult.Text = "不正确的Cron表达式:" + txtCron.Text;
return;
}
txtResult.Text = "";
ITrigger trigger = TriggerBuilder.Create()
.WithCronSchedule(txtCron.Text) //时间表达式
.Build(); var ttimes = TriggerUtils.ComputeFireTimes(trigger as IOperableTrigger, null, );
for (int i = ; i < ; i++)
{
txtResult.AppendText("第" + (i + ) + "次:" + ttimes[i].ToLocalTime().ToString("yyyy-MM-dd HH:mm:ss") + "\r\n");
}
}

Quartz.Net 使用心得(二)的更多相关文章

  1. Spring的quartz定时器重复执行二次的问题解决

    Spring的quartz定时器同一时刻重复执行二次的问题解决 最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的ha ...

  2. Android studio使用心得(二)— 打包签名apk发布

    1.—–Android Studio菜单   Build->Generate Signed APK 2.——Create new.. 3.——-跟eclipse里面一样,添加keystore 信 ...

  3. 关于学习JavaScript 的 高三编程 一些心得(二)

    今天在看高三的过程中,解决了之前我在 面试过程中遇到的一个问题. 就是将一段英文 颠倒过来. 下面就是我的代码: var zhang = "my name is zhangge !" ...

  4. Quartz.NET总结(二)CronTrigger和Cron表达式

    Quartz.NET的任务调度,主要就是依靠CronTrigger和Cron表达式.Cron是已经在UNIX存在了很长一段时间,它有着强大和可靠的调度能力.CronTrigger类也正是是基于Cron ...

  5. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  6. Quartz定时任务学习(二)web应用

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  7. 深入理解Java虚拟机阅读心得(二)

    垃圾收集 程序计数器.虚拟机栈.本地方法栈三个区域随线程而生,随线程而灭:这几个区域的内存分配和回收都具备稳定性,不需要过多的考虑回收的问题.而Java堆和方法区则不一样. Java堆中存储了几乎所有 ...

  8. Quartz.Net进阶之二:关于触发器的更多信息

    与作业一样,触发器相对容易使用,但是在您可以充分利用Quartz.NET之前,确实需要了解和理解各种可自定义的选项. 此外,如前所述,您可以选择不同类型的触发器来满足不同的调度需求. 1.常见触发器属 ...

  9. Java 基于quartz实现定时 之二(XML方式配置)

    <!-- 在spring核心配置文件中进行如下配置 --> <!-- Spring基于quartz定时任务 --> <bean id="triggerByBea ...

随机推荐

  1. LN : leetcode 5 Longest Palindromic Substring

    lc 5 Longest Palindromic Substring 5 Longest Palindromic Substring Given a string s, find the longes ...

  2. C++学习笔记(二)之数组

    数组作形参时,实际传入数组首地址 void print(const int*) void print(const int []) ]) 三种方法等价

  3. PendingIntent 显示通知

    安卓显示通知 PendingIntent pendingIntent=PendingIntent.getActivity(Media.this,0, new Intent(Media.this,Med ...

  4. 主从 binlog_format 设置关系

    1. 主库是row,从库必须是row/mixed.如果是statement,主库有变更时,从库报如下错误(无论什么变更都报错,如insert/update/delete/alter等):     La ...

  5. 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析

    对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...

  6. vue2.0路由(跳转和传参)经典介绍

    声明式 <router-link :to="...">编程式router.push(...) router.push('home')                 / ...

  7. Android Studio 入门 Hello World

    Android Studio 入门 Hello World Gavin要加油 1.5k 6月22日 发布 推荐 1 推荐 收藏 17 收藏,2.1k 浏览 引言 前两天开始学习android开发,本来 ...

  8. KM算法(Kuhn-Munkres)

    算法理论基础: 可行顶点标号 用l(v)表示顶点v的标号,w(uv)表示边(u,v)的权,对于赋权二分图G=(X,Y),若对每条边e=xy,均有l(x)+l(y)>=w(xy),则称这个标号为G ...

  9. centos右上角wired图标消失有效解决方案

    最近在学习Linux配置nginx时,左上角的wired图标突然没了,很神奇.然后在网上按着很多博客说的去改,都没用,最后终于根据下面参考博客内的方案解决了问题,嘿嘿. mv /var/lib/Net ...

  10. js实现字符串反转

    方案1: var str = "abcdef"; console.log( str.split("").reverse().join("") ...