From b6d64f1c9c2113601d6b920d9b53a644669357cf Mon Sep 17 00:00:00 2001 From: siddharth ravikumar Date: Sat, 6 Aug 2022 22:53:24 -0400 Subject: time: update `Duration` Return `time.Duration` instead of seconds as `int`. --- time/time.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'time/time.go') diff --git a/time/time.go b/time/time.go index a7821d9..37ecdbb 100644 --- a/time/time.go +++ b/time/time.go @@ -8,17 +8,18 @@ import ( "fmt" "regexp" "strconv" + "time" ) // ISO 8601 Duration regex for matching duration in PT3H4M60S format. var durationRegex = regexp.MustCompile(`PT(([0-9]{0,2})?H)?(([0-9]{0,2})?M)?(([0-9]{0,2}?)S)?`) -// Converts ISO 8601 duration[1] to seconds. +// Converts ISO 8601 duration[1] to time.Duration // // Recognizes durations in this format: PT3H4M60S // // [1]: https://en.wikipedia.org/wiki/ISO_8601#Durations -func Duration(duration string) (int, error) { +func Duration(duration string) (time.Duration, error) { m := durationRegex.FindStringSubmatch(duration) if m == nil || len(m) == 0 { return 0, fmt.Errorf("duration invalid: %v", duration) @@ -40,5 +41,9 @@ func Duration(duration string) (int, error) { secs += hours * 3600 secs += mins * 60 - return secs, nil + // Convert seconds to time.Duration. + d, err := time.ParseDuration(fmt.Sprintf("%ds", secs)) + + return d, nil +} } -- cgit v1.2.3