wangpengfei
2023-07-04 1142bc88cebcfedac1617749bc195a2615799518
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
}