-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathinterval.go
43 lines (36 loc) · 1.11 KB
/
interval.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package meteomatics
import (
"strconv"
"time"
)
// An IntervalString is a string representation of an interval.
type IntervalString string
// An IntervalStringer can be converted to an IntervalString.
type IntervalStringer interface {
IntervalString() IntervalString
}
// IntervalString returns s as an IntervalString.
func (s IntervalString) IntervalString() IntervalString {
return s
}
// Intervals.
const (
Interval5Min IntervalString = "5min"
Interval10Min IntervalString = "10min"
Interval15Min IntervalString = "15min"
Interval30Min IntervalString = "30min"
Interval1H IntervalString = "1h"
Interval3H IntervalString = "3h"
Interval6H IntervalString = "6h"
Interval12H IntervalString = "12h"
Interval24H IntervalString = "24h"
)
// An Interval is a time.Duration.
type Interval time.Duration
// IntervalString returns i as an IntervalString.
func (i Interval) IntervalString() IntervalString {
if time.Duration(i)%time.Hour == 0 {
return IntervalString(strconv.Itoa(int(time.Duration(i)/time.Hour)) + "h")
}
return IntervalString(strconv.Itoa(int(time.Duration(i)/time.Minute)) + "min")
}