{{ $parts := strings.Split (strings.Substr . 1) "T" }} {{ $timePart := (index $parts 1 | strings.ToLower) }} {{ if eq $timePart "" }}{{ $timePart = "0s" }}{{ end }} {{ $duration := time.ParseDuration $timePart }} {{ $dayCount := replaceRE `^(\d+)D$` `$1` (index $parts 0) }} {{ with $dayCount }} {{ $asHours := printf "%dh" (mul (int .) 24) }} {{ $origin := time "1970-01-01" }} {{ $later := $origin.Add (time.ParseDuration $asHours) }} {{ $later = $later.Add $duration }} {{ $duration = $later.Sub $origin }} {{ end }} {{ return $duration }}