fixed_range.go 937 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package openTime
  2. import (
  3. "fmt"
  4. "strings"
  5. ctime "github.com/cherry-game/cherry/extend/time"
  6. )
  7. type (
  8. fixedRangeParser struct{}
  9. fixedRange struct {
  10. startTime ctime.CherryTime
  11. endTime ctime.CherryTime
  12. }
  13. )
  14. // 20230101/12:00-20230501/24:00
  15. func (p *fixedRangeParser) Parse(params string) (OpenTime, error) {
  16. ts := strings.Split(params, "-")
  17. if len(ts) < 2 {
  18. return nil, fmt.Errorf("nonsupport params: %s", params)
  19. }
  20. startTime, err := parseDateTime(ts[0])
  21. if err != nil {
  22. return nil, err
  23. }
  24. endTime, err := parseDateTime(ts[1])
  25. if err != nil {
  26. return nil, err
  27. }
  28. openTime := &fixedRange{
  29. startTime: startTime,
  30. endTime: endTime,
  31. }
  32. return openTime, nil
  33. }
  34. func (p *fixedRange) Between(t *ctime.CherryTime) bool {
  35. return t.After(p.startTime.Time) && t.Before(p.endTime.Time)
  36. }
  37. func (p *fixedRange) TimeRange(t *ctime.CherryTime) (ctime.CherryTime, ctime.CherryTime) {
  38. return p.startTime, p.endTime
  39. }