diff --git a/layouts/calendar/list.html b/layouts/calendar/list.html
index 552f4477..cd453453 100644
--- a/layouts/calendar/list.html
+++ b/layouts/calendar/list.html
@@ -17,7 +17,7 @@
{{ $events := dict }}
{{ range $page := .Data.Pages }}
{{ range $page.Params.timings }}
- {{ $event := dict "Title" $page.Title "Page" $page.Page "Date" (time.AsTime .starts) }}
+ {{ $event := dict "Title" $page.Title "Page" $page.Page "Date" (time.AsTime .starts) "Duration" (partial "iso8601.duration" .duration) }}
{{ if $event.Date.Before time.Now }}{{ continue }}{{ end }}
{{ $bundle := $event.Date.Format "Jan 2006" }}
{{ $events = merge $events (dict $bundle (sort ((index $events $bundle) | append $event) "Date" "asc")) }}
@@ -35,7 +35,10 @@
{{ if .Page.Params.emoji }}{{ .Page.Params.emoji }}{{ end }}
{{.Page.Title}}
- {{ .Date.Format "Jan 2"}} {{ if or (lt (.Date.Format "15") 9) (gt (.Date.Format "15") 17) }}☾{{ else }}☀︎{{ end }}
+ {{- $hour := .Date.Format "15" -}}
+ {{- $duration := .Duration.Hours -}}
+ {{- $daytime := or (ge $duration 24) (and (gt $hour 9) (lt $hour 17)) }}
+ {{ .Date.Format "Jan 2"}} {{ if $daytime }}☀︎{{ else }}☾{{ end }}
diff --git a/layouts/partials/iso8601.duration b/layouts/partials/iso8601.duration
index 4cabde67..024b33ad 100644
--- a/layouts/partials/iso8601.duration
+++ b/layouts/partials/iso8601.duration
@@ -2,12 +2,12 @@
{{ $timePart := (index $parts 1 | strings.ToLower) }}
{{ if eq $timePart "" }}{{ $timePart = "0s" }}{{ end }}
{{ $duration := time.ParseDuration $timePart }}
-{{ $dayPart := replaceRE `^(\d+)D$` `$1` (index $parts 0) }}
-{{ with $dayPart }}
+{{ $dayCount := replaceRE `^(\d+)D$` `$1` (index $parts 0) }}
+{{ with $dayCount }}
{{ $asHours := printf "%dh" (mul (int .) 24) }}
- {{ $origin := time.Now }}
- {{ $origin.Add (time.ParseDuration $asHours) }}
- {{ $origin.Add $duration }}
- {{ $duration = $origin.Sub $origin }}
+ {{ $origin := time "1970-01-01" }}
+ {{ $later := $origin.Add (time.ParseDuration $asHours) }}
+ {{ $later = $later.Add $duration }}
+ {{ $duration = $later.Sub $origin }}
{{ end }}
{{ return $duration }}