@@ -38,34 +38,38 @@ public Schedule(string expression)
38
38
{
39
39
if ( expression . IsEmpty ( ) )
40
40
return ;
41
+ this . _expression = expression ;
41
42
var parts = expression . Trim ( ) . Split ( ' ' ) ;
42
- if ( parts . Length != 7 )
43
+ if ( parts . Length < 6 )
43
44
return ;
44
45
45
- this . _expression = expression ;
46
+ // 6参数为年月日时分周;7参数为年月日时分秒周
46
47
this . Years = parts [ 0 ] == "*" ? new List < int > ( ) : parts [ 0 ] . Split ( ',' ) . CastInt ( ) ;
47
48
this . Months = parts [ 1 ] == "*" ? new List < int > ( ) : parts [ 1 ] . Split ( ',' ) . CastInt ( ) ;
48
49
this . Days = parts [ 2 ] == "*" ? new List < int > ( ) : parts [ 2 ] . Split ( ',' ) . CastInt ( ) ;
49
50
this . Hours = parts [ 3 ] == "*" ? new List < int > ( ) : parts [ 3 ] . Split ( ',' ) . CastInt ( ) ;
50
51
this . Minutes = parts [ 4 ] == "*" ? new List < int > ( ) : parts [ 4 ] . Split ( ',' ) . CastInt ( ) ;
51
- this . Seconds = parts [ 5 ] == "*" ? new List < int > ( ) : parts [ 5 ] . Split ( ',' ) . CastInt ( ) ;
52
- this . WeekDays = parts [ 6 ] == "*" ? new List < DayOfWeek > ( ) : parts [ 6 ] . Split ( ',' ) . CastEnum < DayOfWeek > ( ) ;
52
+ if ( parts . Length == 6 )
53
+ {
54
+ this . WeekDays = parts [ 5 ] == "*" ? new List < DayOfWeek > ( ) : parts [ 5 ] . Split ( ',' ) . CastEnum < DayOfWeek > ( ) ;
55
+ }
56
+ if ( parts . Length == 7 )
57
+ {
58
+ this . Seconds = parts [ 5 ] == "*" ? new List < int > ( ) : parts [ 5 ] . Split ( ',' ) . CastInt ( ) ;
59
+ this . WeekDays = parts [ 6 ] == "*" ? new List < DayOfWeek > ( ) : parts [ 6 ] . Split ( ',' ) . CastEnum < DayOfWeek > ( ) ;
60
+ }
53
61
}
54
62
55
- /// <summary>构建调度表达式</summary>
56
- Schedule (
57
- List < int > years = null , List < int > months = null , List < int > days = null ,
58
- List < int > hours = null , List < int > minutes = null , List < int > seconds = null ,
59
- List < DayOfWeek > weekdays = null )
60
- {
61
- this . Years = years ;
62
- this . Months = months ;
63
- this . Days = days ;
64
- this . Hours = hours ;
65
- this . Minutes = minutes ;
66
- this . Seconds = seconds ;
67
- this . WeekDays = weekdays ;
68
- }
63
+ // 链式表达式方法
64
+ public Schedule SetYears ( params int [ ] n ) { this . Years = n . ToList ( ) ; return this ; }
65
+ public Schedule SetMonths ( params int [ ] n ) { this . Months = n . ToList ( ) ; return this ; }
66
+ public Schedule SetDays ( params int [ ] n ) { this . Days = n . ToList ( ) ; return this ; }
67
+ public Schedule SetHours ( params int [ ] n ) { this . Hours = n . ToList ( ) ; return this ; }
68
+ public Schedule SetMinutes ( params int [ ] n ) { this . Minutes = n . ToList ( ) ; return this ; }
69
+ public Schedule SetSeconds ( params int [ ] n ) { this . Seconds = n . ToList ( ) ; return this ; }
70
+ public Schedule SetWeekdays ( params DayOfWeek [ ] n ) { this . WeekDays = n . ToList ( ) ; return this ; }
71
+
72
+
69
73
70
74
/// <summary>转化为字符串</summary>
71
75
public override string ToString ( )
@@ -83,7 +87,7 @@ public bool InTime(DateTime dt)
83
87
if ( this . Minutes . IsEmpty ( ) || this . Minutes . Contains ( dt . Minute ) )
84
88
if ( this . Seconds . IsEmpty ( ) || this . Seconds . Contains ( dt . Second ) )
85
89
if ( this . WeekDays . IsEmpty ( ) || this . WeekDays . Contains ( dt . DayOfWeek ) )
86
- return true ;
90
+ return true ;
87
91
return false ;
88
92
}
89
93
}
0 commit comments