no need for NoMatch(), existing time.IsZero() does the job well
This commit is contained in:
		
							parent
							
								
									d3a85f92d8
								
							
						
					
					
						commit
						ae9c090812
					
				
							
								
								
									
										12
									
								
								README.md
								
								
								
								
							
							
						
						
									
										12
									
								
								README.md
								
								
								
								
							| 
						 | 
				
			
			@ -88,13 +88,13 @@ to create a `CronExpression` object once and keep a copy of it for reuse:
 | 
			
		|||
    nextTime := cronexpr.NextTime(time.Now())
 | 
			
		||||
    ...
 | 
			
		||||
 | 
			
		||||
Use `cronexpression.NoMatch()` to find out whether a valid time was returned. For example,
 | 
			
		||||
Use `nextTime.IsZero()` to find out whether a valid time was returned. For example,
 | 
			
		||||
 | 
			
		||||
    cronexpression.NoMatch(cronexpression.NextTime("* * * * * 1980", time.Now()))
 | 
			
		||||
    cronexpression.NextTime("* * * * * 1980", time.Now()).IsZero()
 | 
			
		||||
 | 
			
		||||
will return `true`, whereas
 | 
			
		||||
 | 
			
		||||
    cronexpression.NoMatch(cronexpression.NextTime("* * * * * 2050", time.Now()))
 | 
			
		||||
    cronexpression.NextTime("* * * * * 2050", time.Now()).IsZero()
 | 
			
		||||
 | 
			
		||||
will return `false` (as of 2013-08-29...)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -143,9 +143,3 @@ Given a time stamp `fromTime`, return the closest following time stamp which mat
 | 
			
		|||
 | 
			
		||||
Given a time stamp `fromTime`, return a slice of `n` closest following time stamps which match the cron expression `cronexpr`. The time stamps in the returned slice are in chronological ascending order. The `time.Location` of the returned time stamps is the same as `fromTime`.
 | 
			
		||||
 | 
			
		||||
#### func NoMatch
 | 
			
		||||
 | 
			
		||||
    func NoMatch(t time.Time) bool
 | 
			
		||||
 | 
			
		||||
Returns `true` if time stamp `t` is not a valid time stamp from `CronExpression` point of view. An invalid time stamp is returned by this library whenever no matching time stamp is found given a specific cron expression.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -45,10 +45,6 @@ type CronExpression struct {
 | 
			
		|||
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
 | 
			
		||||
var noMatchTime = time.Date(2100, 7, 1, 0, 0, 0, 0, time.UTC)
 | 
			
		||||
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
 | 
			
		||||
// NewCronExpression() returns a new CronExpression pointer. It expects
 | 
			
		||||
// a well-formed cron expression. If a malformed cron expression is
 | 
			
		||||
// supplied, the result is undefined.
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +123,7 @@ func NextTimeN(cronLine string, fromTime time.Time, n int) []time.Time {
 | 
			
		|||
// time stamp is the same as `fromTime`.
 | 
			
		||||
func (cronexpr *CronExpression) NextTime(fromTime time.Time) time.Time {
 | 
			
		||||
	// Special case
 | 
			
		||||
	if NoMatch(fromTime) {
 | 
			
		||||
	if fromTime.IsZero() {
 | 
			
		||||
		return fromTime
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -145,7 +141,7 @@ func (cronexpr *CronExpression) NextTime(fromTime time.Time) time.Time {
 | 
			
		|||
	v := fromTime.Year()
 | 
			
		||||
	i := sort.SearchInts(cronexpr.yearList, v)
 | 
			
		||||
	if i == len(cronexpr.yearList) {
 | 
			
		||||
		return noMatchTime
 | 
			
		||||
		return time.Time{}
 | 
			
		||||
	}
 | 
			
		||||
	if v != cronexpr.yearList[i] {
 | 
			
		||||
		return cronexpr.nextYear(fromTime)
 | 
			
		||||
| 
						 | 
				
			
			@ -218,7 +214,7 @@ func (cronexpr *CronExpression) NextTimeN(fromTime time.Time, n int) []time.Time
 | 
			
		|||
	nextTimes := make([]time.Time, 0)
 | 
			
		||||
	fromTime = cronexpr.NextTime(fromTime)
 | 
			
		||||
	for {
 | 
			
		||||
		if NoMatch(fromTime) {
 | 
			
		||||
		if fromTime.IsZero() {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
		nextTimes = append(nextTimes, fromTime)
 | 
			
		||||
| 
						 | 
				
			
			@ -233,23 +229,12 @@ func (cronexpr *CronExpression) NextTimeN(fromTime time.Time, n int) []time.Time
 | 
			
		|||
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
 | 
			
		||||
// Returns `true` if time stamp `t` is not a valid time stamp from
 | 
			
		||||
// `CronExpression` point of view. An invalid time stamp is returned by this
 | 
			
		||||
// library whenever no matching time stamp is found given a specific cron
 | 
			
		||||
// expression.
 | 
			
		||||
func NoMatch(t time.Time) bool {
 | 
			
		||||
	// https://en.wikipedia.org/wiki/Cron#CRON_expression: 1970–2099
 | 
			
		||||
	return t.Year() >= 2100
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/******************************************************************************/
 | 
			
		||||
 | 
			
		||||
func (cronexpr *CronExpression) nextYear(t time.Time) time.Time {
 | 
			
		||||
	// Find index at which item in list is greater or equal to
 | 
			
		||||
	// candidate year
 | 
			
		||||
	i := sort.SearchInts(cronexpr.yearList, t.Year()+1)
 | 
			
		||||
	if i == len(cronexpr.yearList) {
 | 
			
		||||
		return noMatchTime
 | 
			
		||||
		return time.Time{}
 | 
			
		||||
	}
 | 
			
		||||
	// Year changed, need to recalculate actual days of month
 | 
			
		||||
	cronexpr.actualDaysOfMonthList = cronexpr.calculateActualDaysOfMonth(cronexpr.yearList[i], cronexpr.monthList[0])
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue