Initial commit (code only without large binaries)
This commit is contained in:
86
EdgeCommon/pkg/serverconfigs/shared/time_duration.go
Normal file
86
EdgeCommon/pkg/serverconfigs/shared/time_duration.go
Normal file
@@ -0,0 +1,86 @@
|
||||
package shared
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/iwind/TeaGo/types"
|
||||
"time"
|
||||
)
|
||||
|
||||
type TimeDurationUnit = string
|
||||
|
||||
const (
|
||||
TimeDurationUnitMS TimeDurationUnit = "ms"
|
||||
TimeDurationUnitSecond TimeDurationUnit = "second"
|
||||
TimeDurationUnitMinute TimeDurationUnit = "minute"
|
||||
TimeDurationUnitHour TimeDurationUnit = "hour"
|
||||
TimeDurationUnitDay TimeDurationUnit = "day"
|
||||
TimeDurationUnitWeek TimeDurationUnit = "week"
|
||||
)
|
||||
|
||||
// TimeDuration 时间间隔
|
||||
type TimeDuration struct {
|
||||
Count int64 `yaml:"count" json:"count"` // 数量
|
||||
Unit TimeDurationUnit `yaml:"unit" json:"unit"` // 单位
|
||||
}
|
||||
|
||||
func (this *TimeDuration) Duration() time.Duration {
|
||||
switch this.Unit {
|
||||
case TimeDurationUnitMS:
|
||||
return time.Duration(this.Count) * time.Millisecond
|
||||
case TimeDurationUnitSecond:
|
||||
return time.Duration(this.Count) * time.Second
|
||||
case TimeDurationUnitMinute:
|
||||
return time.Duration(this.Count) * time.Minute
|
||||
case TimeDurationUnitHour:
|
||||
return time.Duration(this.Count) * time.Hour
|
||||
case TimeDurationUnitDay:
|
||||
return time.Duration(this.Count) * 24 * time.Hour
|
||||
case TimeDurationUnitWeek:
|
||||
return time.Duration(this.Count) * 24 * 7 * time.Hour
|
||||
default:
|
||||
return time.Duration(this.Count) * time.Second
|
||||
}
|
||||
}
|
||||
|
||||
func (this *TimeDuration) Seconds() int64 {
|
||||
switch this.Unit {
|
||||
case TimeDurationUnitMS:
|
||||
return this.Count / 1000
|
||||
case TimeDurationUnitSecond:
|
||||
return this.Count
|
||||
case TimeDurationUnitMinute:
|
||||
return this.Count * 60
|
||||
case TimeDurationUnitHour:
|
||||
return this.Count * 3600
|
||||
case TimeDurationUnitDay:
|
||||
return this.Count * 3600 * 24
|
||||
case TimeDurationUnitWeek:
|
||||
return this.Count * 3600 * 24 * 7
|
||||
default:
|
||||
return this.Count
|
||||
}
|
||||
}
|
||||
|
||||
func (this *TimeDuration) Description() string {
|
||||
var countString = types.String(this.Count)
|
||||
switch this.Unit {
|
||||
case TimeDurationUnitMS:
|
||||
return countString + "毫秒"
|
||||
case TimeDurationUnitSecond:
|
||||
return countString + "秒"
|
||||
case TimeDurationUnitMinute:
|
||||
return countString + "分钟"
|
||||
case TimeDurationUnitHour:
|
||||
return countString + "小时"
|
||||
case TimeDurationUnitDay:
|
||||
return countString + "天"
|
||||
case TimeDurationUnitWeek:
|
||||
return countString + "周"
|
||||
default:
|
||||
return countString + "秒"
|
||||
}
|
||||
}
|
||||
|
||||
func (this *TimeDuration) AsJSON() ([]byte, error) {
|
||||
return json.Marshal(this)
|
||||
}
|
||||
Reference in New Issue
Block a user