欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第七节:Quartz中的cron-like表达式

程序员文章站 2022-04-13 20:51:59
...

配置说明请参考:http://www.blogjava.net/xmatthew/archive/2009/02/15/253864.html

 

cron-like也有叫unix-like表达式的,主要是对时间的配置,在quartz中主要用于触发器中,主要是根据用户配置的表达式以得出要执行作业的时间,看看Quartz是怎么解析cron-like表达式的,又是如何用于触发器之中。

 

CronExpression:

Cron-like表达式的操作类是CronExpression,看一下它的类图吧:

 第七节:Quartz中的cron-like表达式
            
    
    博客分类: Quartz quartz任务调度stringclass作业任务 

 

图中画x号的方法是内部没有实现的方法,方框框起来的是我认为需要了解的方法,我下说一下我框起来的方法的含义:

 

GetNextValidTimeAfter方法:得到下一个有效的时间,比如表达式配置的是: /10 0 0 * * ?

                                           意思是每间隔10s会执行一次作业,如果当前时间是:2010/1/1 10:10:00

                                          哪么这个方法将返回:2010/1/1 10:10:10

GetNextInvalidTimeAfter方法:是得到下一个无效时间

GetNextValidTimeAfter方法:是得到下一次执行的时间

GetNextValidTimeAfter方法:是指给定的一个时间是否满足cron-like表达式

 

 

下面看一个例子:

 

[csharp] view plaincopy
  1. [STAThread]  
  2.        static void Main()  
  3.        {  
  4.            //[秒] [分] [小时] [日] [月] [周] [年]  
  5.            //实例化表达式类,把字符串转成一个对象  
  6.            CronExpression expression = new CronExpression("0 15 10 * * ? 2012");  
  7.   
  8.            while (true)  
  9.            {  
  10.                DateTimeOffset utcNow = SystemTime.UtcNow();  
  11.                Console.WriteLine("UtcNow - " + utcNow);  
  12.   
  13.                //Console.WriteLine("GetFinalFireTime - " + expression.GetFinalFireTime());这个方法没有实现  
  14.                //得到给定时间下一个无效的时间  
  15.                Console.WriteLine("GetNextInvalidTimeAfter - " + expression.GetNextInvalidTimeAfter(utcNow));  
  16.                //得到给定时间的下一个有效的时间  
  17.                Console.WriteLine("GetNextValidTimeAfter - " + expression.GetNextValidTimeAfter(utcNow));  
  18.                //得到给定时间下一个符合表达式的时间  
  19.                Console.WriteLine("GetTimeAfter - " + expression.GetTimeAfter(utcNow));  
  20.                //Console.WriteLine("GetTimeBefore - " + expression.GetTimeBefore(utcNow));这个方法没有实现  
  21.                //给定时间是否符合表达式  
  22.                Console.WriteLine("IsSatisfiedBy - " + expression.IsSatisfiedBy(new DateTimeOffset(2012, 4, 6, 2, 15, 0, TimeSpan.Zero)));  
  23.                Console.WriteLine(expression.TimeZone);  
  24.                Console.WriteLine("------------------------------------");  
  25.                Console.WriteLine(expression.GetExpressionSummary());  
  26.                Console.Read();  
  27.            }  
  28.        }  


 

结果:

第七节:Quartz中的cron-like表达式
            
    
    博客分类: Quartz quartz任务调度stringclass作业任务 

 

 

总结:对cron-like的解析也不是很难嘛,哈哈

 

下载源码

http://download.csdn.net/detail/wanggang421338916/4214458

点击打开链接