www.byjp.me/layouts/partials/iso8601.duration
2023-12-26 09:27:08 +00:00

13 lines
553 B
Text

{{ $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 }}