diff --git a/g/os/gcron/gcron_schedule.go b/g/os/gcron/gcron_schedule.go index 029d8eb78..c9038e146 100644 --- a/g/os/gcron/gcron_schedule.go +++ b/g/os/gcron/gcron_schedule.go @@ -117,23 +117,23 @@ func newSchedule(pattern string) (*cronSchedule, error) { schedule.hour = m } // 天 - if m, err := parseItem(match[4], 1, 31, false); err != nil { + if m, err := parseItem(match[4], 1, 31, true); err != nil { return nil, err } else { schedule.day = m } - // 周 - if m, err := parseItem(match[5], 0, 6, false); err != nil { - return nil, err - } else { - schedule.week = m - } // 月 - if m, err := parseItem(match[6], 1, 12, false); err != nil { + if m, err := parseItem(match[5], 1, 12, false); err != nil { return nil, err } else { schedule.month = m } + // 周 + if m, err := parseItem(match[6], 0, 6, true); err != nil { + return nil, err + } else { + schedule.week = m + } return schedule, nil } else { return nil, errors.New(fmt.Sprintf(`invalid pattern: "%s"`, pattern)) @@ -200,14 +200,14 @@ func parseItemValue(value string, valueType byte) (int, error) { } else { // 英文字母 switch valueType { - case 'w': - if i, ok := weekMap[strings.ToLower(value)]; ok { - return int(i), nil - } case 'm': if i, ok := monthMap[strings.ToLower(value)]; ok { return int(i), nil } + case 'w': + if i, ok := weekMap[strings.ToLower(value)]; ok { + return int(i), nil + } } } return 0, errors.New(fmt.Sprintf(`invalid pattern value: "%s"`, value)) @@ -234,10 +234,10 @@ func (s *cronSchedule) meet(t time.Time) bool { if _, ok := s.day[t.Day()]; !ok { return false } - if _, ok := s.week[int(t.Weekday())]; !ok { + if _, ok := s.month[int(t.Month())]; !ok { return false } - if _, ok := s.month[int(t.Month())]; !ok { + if _, ok := s.week[int(t.Weekday())]; !ok { return false } return true diff --git a/geg/os/gcron/gcron2.go b/geg/os/gcron/gcron2.go index b388ccec7..17e9398ee 100644 --- a/geg/os/gcron/gcron2.go +++ b/geg/os/gcron/gcron2.go @@ -1,17 +1,18 @@ package main import ( + "fmt" "github.com/gogf/gf/g/os/gcron" - "github.com/gogf/gf/g/os/glog" "time" ) -func main() { - cron := gcron.New() - glog.Println("start") - cron.DelayAddOnce(1, "* * * * * *", func() { - glog.Println("run") - }) +func test() { +} + +func main() { + _, err := gcron.Add("*/10 * * * * ?", test) + fmt.Println(err) + fmt.Println(gcron.Entries()) time.Sleep(10*time.Second) } \ No newline at end of file