package utils import ( "fmt" "math" "time" "github.com/jinzhu/now" ) // 判断时间点处于今天 func IsToday(d int64) bool { tt := time.Unix(d, 0) now := time.Now() return tt.Year() == now.Year() && tt.Month() == now.Month() && tt.Day() == now.Day() } //判断是否大于1周 func IsAfterWeek(d int64) bool { tt := time.Unix(d, 0) nowt := time.Now() if !tt.Before(nowt) { return false } at := now.With(tt).AddDate(0, 0, 7).Unix() return nowt.Unix() >= at } // 是否今日首次 func IsFirstTody(timestamp int64) bool { now := time.Now() if timestamp == 0 || timestamp > now.Unix() { return false } tt := time.Unix(timestamp, 0) if !IsToday(timestamp) { if tt.Before(now) { return true } } return false } // 获取当前时间戳下一天0点时间戳 func GetZeroTime(curTime int64) int64 { currentTime := time.Unix(curTime, 0) startTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day(), 0, 0, 0, 0, currentTime.Location()) return startTime.Unix() + 86400 //3600*24 } func IsYestoday(timestamp int64) bool { tt := time.Unix(timestamp, 0) yesTime := time.Now().AddDate(0, 0, -1) return tt.Year() == yesTime.Year() && tt.Month() == yesTime.Month() && tt.Day() == yesTime.Day() } // 确定换算规则 现实1H = 虚拟4H // 计算:根据开服时间为起始时间,计算当前时间与起始时间的差值,计算虚拟当前时间 func MatrixingHour(beginTime string) (t time.Time) { location, err := time.LoadLocation("Asia/Shanghai") if err != nil { return } myConfig := &now.Config{ WeekStartDay: time.Monday, TimeLocation: location, TimeFormats: []string{"2006-01-02 15:04:05"}, } serverStartTime, _ := myConfig.Parse(beginTime) n := time.Now() timeSub := n.Sub(serverStartTime) hourSub := timeSub.Hours() * 2 hh, _ := time.ParseDuration("1h") fmt.Println(hourSub, math.Ceil(hourSub)) t2 := serverStartTime.Add(hh * time.Duration(math.Ceil(hourSub))) fmt.Println(t2) return } func AddHour(hour int) time.Time { return time.Now().Add(time.Duration(hour) * time.Hour) } // CD func IsInCDHour(cdTime int64) bool { if cdTime == 0 { return false } return time.Now().Unix() < cdTime } // 获取本月的开始和结束的时间戳 func GetMonthStartEnd() (int64, int64) { t := time.Now() monthStartDay := t.AddDate(0, 0, -t.Day()+1) monthStartTime := time.Date(monthStartDay.Year(), monthStartDay.Month(), monthStartDay.Day(), 0, 0, 0, 0, t.Location()) monthEndDay := monthStartTime.AddDate(0, 1, -1) monthEndTime := time.Date(monthEndDay.Year(), monthEndDay.Month(), monthEndDay.Day(), 23, 59, 59, 0, t.Location()) _d1 := monthStartTime.Unix() _d2 := monthEndTime.Unix() fmt.Printf("%d,%d", _d1, _d2) return _d1, _d2 }