增加服务带宽统计

This commit is contained in:
GoEdgeLab
2022-07-05 20:08:58 +08:00
parent efd60b7080
commit 65a2aedc67
12 changed files with 577 additions and 147 deletions

View File

@@ -9,6 +9,19 @@ import (
"time"
)
// 分钟时间点
type timeMinute struct {
Day string
Minute string
}
// 分钟时间范围
type timeMinuteRange struct {
Day string
MinuteFrom string
MinuteTo string
}
// RangeDays 计算日期之间的所有日期格式为YYYYMMDD
func RangeDays(dayFrom string, dayTo string) ([]string, error) {
ok, err := regexp.MatchString(`^\d{8}$`, dayFrom)
@@ -79,15 +92,15 @@ func RangeMonths(dayFrom string, dayTo string) ([]string, error) {
dayFrom, dayTo = dayTo, dayFrom
}
result := []string{dayFrom[:6]}
var result = []string{dayFrom[:6]}
year := types.Int(dayFrom[:4])
month := types.Int(dayFrom[4:6])
day := types.Int(dayFrom[6:])
t := time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
var year = types.Int(dayFrom[:4])
var month = types.Int(dayFrom[4:6])
var day = types.Int(dayFrom[6:])
var t = time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.Local)
for {
t = t.AddDate(0, 0, 20)
newDay := timeutil.Format("Ymd", t)
var newDay = timeutil.Format("Ymd", t)
if newDay <= dayTo {
var monthString = newDay[:6]
if !lists.ContainsString(result, monthString) {
@@ -129,17 +142,17 @@ func RangeHours(hourFrom string, hourTo string) ([]string, error) {
}
// 不能超过N天
maxHours := 100 - 1 // -1 是去掉默认加入的dayFrom
result := []string{hourFrom}
var maxHours = 100 - 1 // -1 是去掉默认加入的dayFrom
var result = []string{hourFrom}
year := types.Int(hourFrom[:4])
month := types.Int(hourFrom[4:6])
day := types.Int(hourFrom[6:8])
hour := types.Int(hourFrom[8:])
t := time.Date(year, time.Month(month), day, hour, 0, 0, 0, time.Local)
var year = types.Int(hourFrom[:4])
var month = types.Int(hourFrom[4:6])
var day = types.Int(hourFrom[6:8])
var hour = types.Int(hourFrom[8:])
var t = time.Date(year, time.Month(month), day, hour, 0, 0, 0, time.Local)
for {
t = t.Add(1 * time.Hour)
newHour := timeutil.Format("YmdH", t)
var newHour = timeutil.Format("YmdH", t)
if newHour <= hourTo {
result = append(result, newHour)
} else {
@@ -154,3 +167,56 @@ func RangeHours(hourFrom string, hourTo string) ([]string, error) {
return result, nil
}
// RangeMinutes 计算若干个时间点,返回结果为 [ [day1, minute1], [day2, minute2] ... ]
func RangeMinutes(toTime time.Time, count int, everyMinutes int64) []timeMinute {
var everySeconds = everyMinutes * 60
if everySeconds <= 0 {
everySeconds = 300
}
var result = []timeMinute{}
var fromTime = time.Unix(toTime.Unix()-everySeconds*int64(count-1), 0)
for {
var timestamp = fromTime.Unix() / everySeconds * everySeconds
result = append(result, timeMinute{
Day: timeutil.FormatTime("Ymd", timestamp),
Minute: timeutil.FormatTime("Hi", timestamp),
})
fromTime = time.Unix(fromTime.Unix()+everySeconds, 0)
count--
if count <= 0 {
break
}
}
return result
}
// GroupMinuteRanges 将时间点分组
func GroupMinuteRanges(minutes []timeMinute) []timeMinuteRange {
var result = []*timeMinuteRange{}
var lastDay = ""
var lastRange *timeMinuteRange
for _, minute := range minutes {
if minute.Day != lastDay {
lastDay = minute.Day
lastRange = &timeMinuteRange{
Day: minute.Day,
MinuteFrom: minute.Minute,
MinuteTo: minute.Minute,
}
result = append(result, lastRange)
} else {
if lastRange != nil {
lastRange.MinuteTo = minute.Minute
}
}
}
var finalResult = []timeMinuteRange{}
for _, minutePtr := range result {
finalResult = append(finalResult, *minutePtr)
}
return finalResult
}