public  static  String  createCronExpression ( TaskScheduleModel  taskScheduleModel) { StringBuffer  cronExp =  new  StringBuffer ( "" ) ; if ( null  ==  taskScheduleModel. getJobType ( ) )  { System . out. println ( "执行周期未配置"  ) ; } if  ( null  !=  taskScheduleModel. getSecond ( ) &&  null  !=  taskScheduleModel. getMinute ( ) &&  null  !=  taskScheduleModel. getHour ( ) )  { cronExp. append ( taskScheduleModel. getSecond ( ) ) . append ( " " ) ; cronExp. append ( taskScheduleModel. getMinute ( ) ) . append ( " " ) ; cronExp. append ( taskScheduleModel. getHour ( ) ) . append ( " " ) ; if ( taskScheduleModel. getJobType ( ) . getValue ( )  ==  1 ) { if ( taskScheduleModel. getBeApart ( ) != null ) { cronExp. append ( "1" ) ; cronExp. append ( "/" ) ; cronExp. append ( taskScheduleModel. getBeApart ( ) + 1 ) ; cronExp. append ( " " ) ; cronExp. append ( "* " ) ; cronExp. append ( "? " ) ; cronExp. append ( "*" ) ; } else  { cronExp. append ( "* " ) ; cronExp. append ( "* " ) ; cronExp. append ( "?" ) ; } } else  if ( taskScheduleModel. getJobType ( ) . getValue ( )  ==  3 ) { cronExp. append ( "? " ) ; cronExp. append ( "* " ) ; Integer [ ]  weeks =  taskScheduleModel. getDayOfWeeks ( ) ; for ( int  i =  0 ;  i <  weeks. length;  i++ ) { if ( i ==  0 ) { cronExp. append ( weeks[ i] ) ; }  else { cronExp. append ( "," ) . append ( weeks[ i] ) ; } } } else  if ( taskScheduleModel. getJobType ( ) . getValue ( )  ==  2 ) { Integer [ ]  days =  taskScheduleModel. getDayOfMonths ( ) ; for ( int  i =  0 ;  i <  days. length;  i++ ) { if ( i ==  0 ) { if ( days[ i] == 32 ) { String  endMouthCron= "0 0 0 L * ?" ; return  endMouthCron; } else  { cronExp. append ( days[ i] ) ; } }  else { cronExp. append ( "," ) . append ( days[ i] ) ; } } cronExp. append ( " * " ) ; cronExp. append ( "?" ) ; } else  if ( taskScheduleModel. getJobType ( ) . getValue ( ) ==  4 ) { Integer [ ]  days =  taskScheduleModel. getDayOfMonths ( ) ; if ( ArrayUtil . isEmpty ( days) ) { cronExp. append ( "*" ) ; } else { for ( int  i =  0 ;  i <  days. length;  i++ ) { if ( i ==  0 ) { cronExp. append ( days[ i] ) ; }  else { cronExp. append ( "," ) . append ( days[ i] ) ; } } } Integer [ ]  months =  taskScheduleModel. getMonths ( ) ; if  ( ArrayUtil . isEmpty ( months) )  { cronExp. append ( " *" ) ; } else { for  ( int  i =  0 ;  i <  months. length;  i++ ) { Integer  month =  months[ i] ; if  ( month >  12 ) { throw  new  RuntimeException ( "月份数据异常: " +  Arrays . toString ( months) ) ; } if ( i ==  0 ) { cronExp. append ( " " ) . append ( month) ; } else { cronExp. append ( "," ) . append ( month) ; } } } cronExp. append ( " ?" ) ; } else  if ( taskScheduleModel. getJobType ( ) . getValue ( )  ==  0 ) { cronExp. append ( "* " ) ; cronExp. append ( "* " ) ; cronExp. append ( "?" ) ; } } else  { System . out. println ( "时或分或秒参数未配置"  ) ; } return  cronExp. toString ( ) ; } 
 public  static  String  createDescription ( TaskScheduleModel  taskScheduleModel) { StringBuffer  description =  new  StringBuffer ( "" ) ; 
if  ( null  !=  taskScheduleModel. getSecond ( ) &&  null  !=  taskScheduleModel. getMinute ( ) &&  null  !=  taskScheduleModel. getHour ( ) )  { if ( taskScheduleModel. getJobType ( ) . getValue ( )  ==  1 ) { description. append ( "每天" ) ; description. append ( taskScheduleModel. getHour ( ) ) . append ( "时" ) ; description. append ( taskScheduleModel. getMinute ( ) ) . append ( "分" ) ; description. append ( taskScheduleModel. getSecond ( ) ) . append ( "秒" ) ; } else  if ( taskScheduleModel. getJobType ( ) . getValue ( )  ==  3 ) { if ( taskScheduleModel. getDayOfWeeks ( )  !=  null  &&  taskScheduleModel. getDayOfWeeks ( ) . length >  0 )  { String  days =  "" ; for ( int  i :  taskScheduleModel. getDayOfWeeks ( ) )  { if ( i== 1 ) { days +=  "周日" ; } else  { i= i- 1 ; days +=  "周"  +  i; } } description. append ( "每周的" ) . append ( days) . append ( " " ) ; } if  ( null  !=  taskScheduleModel. getSecond ( ) &&  null  !=  taskScheduleModel. getMinute ( ) &&  null  !=  taskScheduleModel. getHour ( ) )  { description. append ( "," ) ; description. append ( taskScheduleModel. getHour ( ) ) . append ( "时" ) ; description. append ( taskScheduleModel. getMinute ( ) ) . append ( "分" ) ; description. append ( taskScheduleModel. getSecond ( ) ) . append ( "秒" ) ; } } else  if ( taskScheduleModel. getJobType ( ) . getValue ( )  ==  2 ) { if ( taskScheduleModel. getDayOfMonths ( )  !=  null  &&  taskScheduleModel. getDayOfMonths ( ) . length >  0 )  { String  days =  "" ; for ( int  i :  taskScheduleModel. getDayOfMonths ( ) )  { days +=  i +  "号" ; } description. append ( "每月的" ) . append ( days) . append ( " " ) ; } description. append ( taskScheduleModel. getHour ( ) ) . append ( "时" ) ; description. append ( taskScheduleModel. getMinute ( ) ) . append ( "分" ) ; description. append ( taskScheduleModel. getSecond ( ) ) . append ( "秒" ) ; } } return  description. toString ( ) ; }  public  static  String  createLoopCronExpression ( int  rate,  int  cycle)  { String  cron =  "" ; switch  ( rate)  { case  0 : / /  每cycle秒执行一次cron =  "0/"  +  cycle +  " * * * * ?" ; break ; case  1 : / /  每cycle分钟执行一次cron =  "0 0/"  +  cycle +  " * * * ?" ; break ; case  2 : / /  每cycle小时执行一次cron =  "0 0 0/"  +  cycle +  " * * ?" ; break ; case  3 : / /  每cycle天的0 点执行一次cron =  "0 0 0 1/"  +  cycle +  " * ?" ; break ; case  4 : / /  每cycle月的1 号0 点执行一次cron =  "0 0 0 1 1/"  +  cycle +  " ? " ; break ; case  5 : / /   每天cycle点执行一次cron =  "0 0 "  +  cycle+  "  * * ?" ; break ; default : / /  默认每cycle秒执行一次cron =  "0/1 * * * * ?" ; break ; } return  cron; } 
public  enum   JobEnum  { EVERY ( "每天" , 0 ) , DAY ( "日" , 1 ) , MONTH ( "月" , 2 ) , WEEK ( "周" , 3 ) , YEAR ( "年" , 4 ) , ; JobEnum ( String  name, Integer  value)  { this . name =  name; this . value =  value; } private  final  String  name; private  final  Integer  value; public  Integer  getValue ( )  { return  value; } public  String  getName ( )  { return  name; } } 
public  class  TaskScheduleModel  { JobEnum  jobType; Integer [ ]  dayOfWeeks; Integer [ ]  dayOfMonths; Integer  second; Integer  minute; Integer  hour; Integer [ ]  months; Integer  beApart; public  Integer [ ]  getMonths ( )  { return  months; } public  void  setMonths ( Integer [ ]  months)  { this . months =  months; } public  Integer  getBeApart ( )  { return  beApart; } public  void  setBeApart ( Integer  beApart)  { this . beApart =  beApart; } public  JobEnum  getJobType ( )  { return  jobType; } public  void  setJobType ( JobEnum  jobType)  { this . jobType =  jobType; } public  Integer [ ]  getDayOfWeeks ( )  { return  dayOfWeeks; } public  void  setDayOfWeeks ( Integer [ ]  dayOfWeeks)  { this . dayOfWeeks =  dayOfWeeks; } public  Integer [ ]  getDayOfMonths ( )  { return  dayOfMonths; } public  void  setDayOfMonths ( Integer [ ]  dayOfMonths)  { this . dayOfMonths =  dayOfMonths; } public  Integer  getSecond ( )  { return  second; } public  void  setSecond ( Integer  second)  { this . second =  second; } public  Integer  getMinute ( )  { return  minute; } public  void  setMinute ( Integer  minute)  { this . minute =  minute; } public  Integer  getHour ( )  { return  hour; } public  void  setHour ( Integer  hour)  { this . hour =  hour; } } 
 public  static  void  main ( String [ ]  args)  { TaskScheduleModel  taskScheduleModel =  new  TaskScheduleModel ( ) ; taskScheduleModel. setJobType ( JobEnum . DAY ) ; Integer  hour =  17 ;  Integer  minute =  40 ;  Integer  second =  00 ;  taskScheduleModel. setHour ( hour) ; taskScheduleModel. setMinute ( minute) ; taskScheduleModel. setSecond ( second) ; taskScheduleModel. setBeApart ( 1 ) ; String  cropExp =  createCronExpression ( taskScheduleModel) ; System . out. println ( cropExp +  ":"  +  createDescription ( taskScheduleModel) ) ; taskScheduleModel. setJobType ( JobEnum . WEEK ) ; Integer [ ]  dayOfWeeks =  new  Integer [ 7 ] ; dayOfWeeks[ 0 ]  =  1 ; dayOfWeeks[ 1 ]  =  2 ; dayOfWeeks[ 2 ]  =  3 ; dayOfWeeks[ 3 ]  =  4 ; dayOfWeeks[ 4 ]  =  5 ; dayOfWeeks[ 5 ]  =  6 ; dayOfWeeks[ 6 ]  =  7 ; taskScheduleModel. setDayOfWeeks ( dayOfWeeks) ; cropExp =  createCronExpression ( taskScheduleModel) ; System . out. println ( cropExp +  ":"  +  createDescription ( taskScheduleModel) ) ; taskScheduleModel. setJobType ( JobEnum . MONTH ) ; Integer [ ]  dayOfMonths =  new  Integer [ 3 ] ; dayOfMonths[ 0 ]  =  1 ; dayOfMonths[ 1 ]  =  21 ; dayOfMonths[ 2 ]  =  13 ; taskScheduleModel. setDayOfMonths ( dayOfMonths) ; cropExp =  createCronExpression ( taskScheduleModel) ; System . out. println ( cropExp +  ":"  +  createDescription ( taskScheduleModel) ) ; taskScheduleModel. setJobType ( JobEnum . EVERY ) ; cropExp =  createCronExpression ( taskScheduleModel) ; System . out. println ( cropExp) ; } 
0  40  17  1 / 2  *  ?  * : 每天17 时40 分0 秒
0  40  17  ?  *  1 , 2 , 3 , 4 , 5 , 6 , 7 : 每周的周日周1 周2 周3 周4 周5 周6  , 17 时40 分0 秒
0  40  17  1 , 21 , 13  *  ? : 每月的1 号21 号13 号 17 时40 分0 秒
0  40  17  *  *  ?