endDate method
Returns the previous DateTime that matches the Every pattern.
If the date is a DateTime that matches the Every pattern, it will
be returned.
If the date is not a DateTime that matches the Every pattern,
previous will be called to generate a new one.
Implementation
@override
DateTime endDate(DateTime date) {
if (valid(date)) return date;
return previous(date);
}