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
| package utils
|
| import (
| "strconv"
| "strings"
| "time"
| )
|
| func ParseDuration(d string) (time.Duration, error) {
| d = strings.TrimSpace(d)
| dr, err := time.ParseDuration(d)
| if err == nil {
| return dr, nil
| }
| if strings.Contains(d, "d") {
| index := strings.Index(d, "d")
|
| hour, _ := strconv.Atoi(d[:index])
| dr = time.Hour * 24 * time.Duration(hour)
| ndr, err := time.ParseDuration(d[index+1:])
| if err != nil {
| return dr, nil
| }
| return dr + ndr, nil
| }
|
| dv, err := strconv.ParseInt(d, 10, 64)
| return time.Duration(dv), err
| }
|
|