github.com/kubeshop/testkube@v1.17.23/pkg/datefilter/filter.go (about) 1 package datefilter 2 3 import "time" 4 5 const DateFormatISO8601 string = "2006-01-02" 6 7 // DateFilter is used to filter dates 8 type DateFilter struct { 9 Start time.Time 10 End time.Time 11 IsStartValid bool 12 IsEndValid bool 13 } 14 15 // NewDateFilter creates new DateFilter with the start date and end date 16 func NewDateFilter(startDate string, endDate string) DateFilter { 17 var err error 18 19 dFilter := DateFilter{} 20 dFilter.Start, err = time.Parse(DateFormatISO8601, startDate) 21 dFilter.IsStartValid = (err == nil) 22 dFilter.End, err = time.Parse(DateFormatISO8601, endDate) 23 dFilter.IsEndValid = err == nil 24 25 return dFilter 26 } 27 28 // IsPassing tests if a specific date is passing the filter 29 func (dFilter DateFilter) IsPassing(date time.Time) bool { 30 if !dFilter.IsStartValid { 31 return true 32 } 33 oneDay := 24 * time.Hour 34 if dFilter.Start.Before(date) || dFilter.Start.Equal(date.Truncate(oneDay)) { 35 if !dFilter.IsEndValid { 36 return true 37 } 38 if dFilter.End.After(date) || dFilter.End.Equal(date.Truncate(oneDay)) { 39 return true 40 } 41 } 42 return false 43 }