mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-20 11:58:39 +00:00
tstime: fix ParseDuration for '6' digit (#6363)
The cutset provided to strings.TrimRight was missing the digit '6', making it such that we couldn't parse something like "365d". Signed-off-by: Joe Tsai <joetsai@digital-static.net>
This commit is contained in:
parent
eff62b7b1b
commit
ec1e67b1ab
@ -144,15 +144,15 @@ func Parse3339B(b []byte) (time.Time, error) {
|
|||||||
return parse3339m(mem.B(b))
|
return parse3339m(mem.B(b))
|
||||||
}
|
}
|
||||||
|
|
||||||
// ParseDuration is more expressive than time.ParseDuration, also accepting d
|
// ParseDuration is more expressive than time.ParseDuration,
|
||||||
// (days) and w (weeks) literals.
|
// also accepting 'd' (days) and 'w' (weeks) literals.
|
||||||
func ParseDuration(s string) (time.Duration, error) {
|
func ParseDuration(s string) (time.Duration, error) {
|
||||||
for {
|
for {
|
||||||
end := strings.IndexAny(s, "dw")
|
end := strings.IndexAny(s, "dw")
|
||||||
if end < 0 {
|
if end < 0 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
start := end - (len(s[:end]) - len(strings.TrimRight(s[:end], "012345789")))
|
start := end - (len(s[:end]) - len(strings.TrimRight(s[:end], "0123456789")))
|
||||||
n, err := strconv.Atoi(s[start:end])
|
n, err := strconv.Atoi(s[start:end])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
|
@ -109,6 +109,10 @@ func TestParseDuration(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{"1h", time.Hour},
|
{"1h", time.Hour},
|
||||||
{"1d", 24 * time.Hour},
|
{"1d", 24 * time.Hour},
|
||||||
|
{"365d", 365 * 24 * time.Hour},
|
||||||
|
{"12345d", 12345 * 24 * time.Hour},
|
||||||
|
{"67890d", 67890 * 24 * time.Hour},
|
||||||
|
{"100d", 100 * 24 * time.Hour},
|
||||||
{"1d1d", 48 * time.Hour},
|
{"1d1d", 48 * time.Hour},
|
||||||
{"1h1d", 25 * time.Hour},
|
{"1h1d", 25 * time.Hour},
|
||||||
{"1d1h", 25 * time.Hour},
|
{"1d1h", 25 * time.Hour},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user