wangchuanjin před 2 roky
rodič
revize
f5c4888e39
1 změnil soubory, kde provedl 21 přidání a 1 odebrání
  1. 21 1
      p/timetask.go

+ 21 - 1
p/timetask.go

@@ -1,10 +1,11 @@
 package p
 
 import (
-	util "app.yhyue.com/moapp/jybase/common"
 	"strings"
 	"time"
 
+	util "app.yhyue.com/moapp/jybase/common"
+
 	"github.com/donnie4w/go-logger/logger"
 )
 
@@ -129,3 +130,22 @@ func (t *timeTask) Month() (int64, int64) {
 	endDate := startDate.AddDate(0, 1, -1)
 	return startDate.Unix(), endDate.Unix()
 }
+
+//执行每小时任务
+func (t *timeTask) RunEveryHour(duration int64, f func()) {
+	now := time.Now()
+	go VarTimeTask.RunInTimeLoop("执行每小时任务", HourFormat(now.Hour()), HourFormat(now.Hour()+1), duration, true, false, nil, func() {
+		f()
+	})
+	nextHour := time.Date(now.Year(), now.Month(), now.Day(), now.Hour()+1, 0, 0, 0, time.Local)
+	ticker := time.NewTicker(nextHour.Sub(now))
+	for {
+		select {
+		case <-ticker.C:
+			go VarTimeTask.RunInTimeLoop("执行每小时任务", HourFormat(time.Now().Hour()), HourFormat(time.Now().Hour()+1), duration, true, false, nil, func() {
+				f()
+			})
+			ticker.Reset(time.Hour)
+		}
+	}
+}