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) {
{ params.StartAtDate }
-
{ params.StartAtTime } (UTC)
+
{ params.StartAtTime } ({ params.TimeZone })
if params.EndAtTime != "" {
@@ -62,7 +62,7 @@ templ calendarEventTemplate(params CalendarPageParams) {
{ 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)
+}