mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2025-11-03 20:40:25 +08:00
47 lines
1.2 KiB
Go
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)
|
|
}
|