Files
EdgeCommon/pkg/serverconfigs/shared/time_duration.go
2021-12-08 17:40:27 +08:00

47 lines
1.2 KiB
Go

package shared
import (
"encoding/json"
"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) AsJSON() ([]byte, error) {
return json.Marshal(this)
}