package openTime import ( "fmt" "strings" ctime "github.com/cherry-game/cherry/extend/time" ) type ( fixedRangeParser struct{} fixedRange struct { startTime ctime.CherryTime endTime ctime.CherryTime } ) // 20230101/12:00-20230501/24:00 func (p *fixedRangeParser) Parse(params string) (OpenTime, error) { ts := strings.Split(params, "-") if len(ts) < 2 { return nil, fmt.Errorf("nonsupport params: %s", params) } startTime, err := parseDateTime(ts[0]) if err != nil { return nil, err } endTime, err := parseDateTime(ts[1]) if err != nil { return nil, err } openTime := &fixedRange{ startTime: startTime, endTime: endTime, } return openTime, nil } func (p *fixedRange) Between(t *ctime.CherryTime) bool { return t.After(p.startTime.Time) && t.Before(p.endTime.Time) } func (p *fixedRange) TimeRange(t *ctime.CherryTime) (ctime.CherryTime, ctime.CherryTime) { return p.startTime, p.endTime }