diff options
| -rw-r--r-- | todolist/date_filter.go | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/todolist/date_filter.go b/todolist/date_filter.go index 8d64484..5a40e27 100644 --- a/todolist/date_filter.go +++ b/todolist/date_filter.go @@ -68,7 +68,7 @@ func (f *DateFilter) filterAgenda(pivot time.Time) []*Todo { return ret } -func (f *DateFilter) filterToday(pivot time.Time) []*Todo { +func (f *DateFilter) filterToExactDate(pivot time.Time) []*Todo { var ret []*Todo for _, todo := range f.Todos { if todo.Due == pivot.Format("2006-01-02") { @@ -78,6 +78,10 @@ func (f *DateFilter) filterToday(pivot time.Time) []*Todo { return ret } +func (f *DateFilter) filterToday(pivot time.Time) []*Todo { + return f.filterToExactDate(pivot) +} + func (f *DateFilter) filterDay(pivot time.Time, day time.Weekday) []*Todo { var ret []*Todo filtered := f.filterThisWeek(pivot) @@ -92,10 +96,16 @@ func (f *DateFilter) filterDay(pivot time.Time, day time.Weekday) []*Todo { } func (f *DateFilter) filterTomorrow(pivot time.Time) []*Todo { - var ret []*Todo pivot = pivot.AddDate(0, 0, 1) + return f.filterToExactDate(pivot) +} + +func (f *DateFilter) filterBetweenDatesInclusive(begin, end time.Time) []*Todo { + var ret []*Todo + for _, todo := range f.Todos { - if todo.Due == pivot.Format("2006-01-02") { + dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) + if (begin.Before(dueTime) || begin.Equal(dueTime)) && end.After(dueTime) { ret = append(ret, todo) } } @@ -103,14 +113,19 @@ func (f *DateFilter) filterTomorrow(pivot time.Time) []*Todo { } func (f *DateFilter) filterThisWeek(pivot time.Time) []*Todo { - var ret []*Todo begin := bod(f.FindSunday(pivot)) end := begin.AddDate(0, 0, 7) + return f.filterBetweenDatesInclusive(begin, end) +} + +func (f *DateFilter) filterBetweenDatesExclusive(begin, end time.Time) []*Todo { + var ret []*Todo + for _, todo := range f.Todos { dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) - if (begin.Before(dueTime) || begin.Equal(dueTime)) && end.After(dueTime) { + if begin.Before(dueTime) && end.After(dueTime) { ret = append(ret, todo) } } @@ -118,33 +133,19 @@ func (f *DateFilter) filterThisWeek(pivot time.Time) []*Todo { } func (f *DateFilter) filterNextWeek(pivot time.Time) []*Todo { - var ret []*Todo begin := f.FindSunday(pivot).AddDate(0, 0, 7) end := begin.AddDate(0, 0, 7) - for _, todo := range f.Todos { - dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) - if begin.Before(dueTime) && end.After(dueTime) { - ret = append(ret, todo) - } - } - return ret + return f.filterBetweenDatesExclusive(begin, end) } func (f *DateFilter) filterLastWeek(pivot time.Time) []*Todo { - var ret []*Todo begin := f.FindSunday(pivot).AddDate(0, 0, -7) end := begin.AddDate(0, 0, 7) - for _, todo := range f.Todos { - dueTime, _ := time.ParseInLocation("2006-01-02", todo.Due, f.Location) - if begin.Before(dueTime) && end.After(dueTime) { - ret = append(ret, todo) - } - } - return ret + return f.filterBetweenDatesExclusive(begin, end) } func (f *DateFilter) filterOverdue(pivot time.Time) []*Todo { |
