mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-02 03:40:27 +08:00
57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
// Copyright 2022 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cloud .
|
|
|
|
package utils
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"regexp"
|
|
|
|
"github.com/iwind/TeaGo/types"
|
|
)
|
|
|
|
// RangeTimes 计算时间点
|
|
func RangeTimes(timeFrom string, timeTo string, everyMinutes int32) (result []string, err error) {
|
|
if everyMinutes <= 0 {
|
|
return nil, errors.New("invalid 'everyMinutes'")
|
|
}
|
|
|
|
var reg = regexp.MustCompile(`^\d{4}$`)
|
|
if !reg.MatchString(timeFrom) {
|
|
return nil, errors.New("invalid timeFrom '" + timeFrom + "'")
|
|
}
|
|
if !reg.MatchString(timeTo) {
|
|
return nil, errors.New("invalid timeTo '" + timeTo + "'")
|
|
}
|
|
|
|
if timeFrom > timeTo {
|
|
// swap
|
|
timeFrom, timeTo = timeTo, timeFrom
|
|
}
|
|
|
|
var everyMinutesInt = int(everyMinutes)
|
|
|
|
var fromHour = types.Int(timeFrom[:2])
|
|
var fromMinute = types.Int(timeFrom[2:])
|
|
var toHour = types.Int(timeTo[:2])
|
|
var toMinute = types.Int(timeTo[2:])
|
|
|
|
if fromMinute%everyMinutesInt == 0 {
|
|
result = append(result, timeFrom)
|
|
}
|
|
|
|
for {
|
|
fromMinute += everyMinutesInt
|
|
if fromMinute > 59 {
|
|
fromHour += fromMinute / 60
|
|
fromMinute = fromMinute % 60
|
|
}
|
|
if fromHour > toHour || (fromHour == toHour && fromMinute > toMinute) {
|
|
break
|
|
}
|
|
result = append(result, fmt.Sprintf("%02d%02d", fromHour, fromMinute))
|
|
}
|
|
|
|
return
|
|
}
|