diff --git a/calendar_event.templ b/calendar_event.templ index 8dbc0d4..c76fc5a 100644 --- a/calendar_event.templ +++ b/calendar_event.templ @@ -45,7 +45,7 @@ templ calendarEventTemplate(params CalendarPageParams) {
{ params.StartAtDate }
if params.StartAtTime != "" && params.EndAtTime != "" { -
From { params.StartAtTime } to { params.EndAtTime } (UTC)
+
From { params.StartAtTime } to { params.EndAtTime } ({ params.TimeZone })
}
@@ -54,7 +54,7 @@ templ calendarEventTemplate(params CalendarPageParams) {
Start date
{ params.StartAtDate }
-
{ params.StartAtTime } (UTC)
+
{ params.StartAtTime } ({ params.TimeZone })
if params.EndAtTime != "" { @@ -62,7 +62,7 @@ templ calendarEventTemplate(params CalendarPageParams) {
End date
{ params.EndAtDate }
-
{ params.EndAtTime } (UTC)
+
{ params.EndAtTime } ({ params.TimeZone })
} diff --git a/justfile b/justfile index 44df0b7..2592fcc 100644 --- a/justfile +++ b/justfile @@ -14,7 +14,7 @@ deploy: templ tailwind ssh njump 'systemctl start njump' debug-build: templ tailwind - go build -tags=nocache -o /tmp/njump . + go build -o /tmp/njump . templ: templ generate diff --git a/pages.go b/pages.go index 6fa63e8..d5770c6 100644 --- a/pages.go +++ b/pages.go @@ -246,6 +246,7 @@ type CalendarPageParams struct { OpenGraphParams HeadParams Details DetailsParams + TimeZone string StartAtDate string StartAtTime string EndAtDate string diff --git a/render_event.go b/render_event.go index 10f1f05..3cc32fb 100644 --- a/render_event.go +++ b/render_event.go @@ -464,11 +464,20 @@ func renderEvent(w http.ResponseWriter, r *http.Request) { var StartAtDate, StartAtTime string var EndAtDate, EndAtTime string - StartAtDate = data.kind31922Or31923Metadata.Start.Format("02 Jan 2006") - EndAtDate = data.kind31922Or31923Metadata.End.Format("02 Jan 2006") + var TimeZone string + + location, err := time.LoadLocation(data.kind31922Or31923Metadata.StartTzid) + if err != nil { + // Set default TimeZone to UTC + location = time.UTC + } + TimeZone = getUTCOffset(location) + + StartAtDate = data.kind31922Or31923Metadata.Start.In(location).Format("02 Jan 2006") + EndAtDate = data.kind31922Or31923Metadata.End.In(location).Format("02 Jan 2006") if data.kind31922Or31923Metadata.CalendarEventKind == 31923 { - StartAtTime = data.kind31922Or31923Metadata.Start.Format("15:04") - EndAtTime = data.kind31922Or31923Metadata.End.Format("15:04") + StartAtTime = data.kind31922Or31923Metadata.Start.In(location).Format("15:04") + EndAtTime = data.kind31922Or31923Metadata.End.In(location).Format("15:04") } // Reset EndDate/Time if it is non initialized (beginning of the Unix epoch) @@ -485,7 +494,7 @@ func renderEvent(w http.ResponseWriter, r *http.Request) { NaddrNaked: data.naddrNaked, NeventNaked: data.neventNaked, }, - + TimeZone: TimeZone, StartAtDate: StartAtDate, StartAtTime: StartAtTime, EndAtDate: EndAtDate, diff --git a/utils.go b/utils.go index ece2096..5bfebd5 100644 --- a/utils.go +++ b/utils.go @@ -478,3 +478,19 @@ func clamp(val, low, high int) int { } return val } + +func getUTCOffset(loc *time.Location) string { + // Get the offset from UTC + _, offset := time.Now().In(loc).Zone() + + // Calculate the offset in hours + offsetHours := offset / 3600 + + // Format the UTC offset string + sign := "+" + if offsetHours < 0 { + sign = "-" + offsetHours = -offsetHours + } + return fmt.Sprintf("UTC%s%d", sign, offsetHours) +}