Show correct datetime in relation to time zone

This commit is contained in:
dtonon
2024-05-29 22:33:22 +02:00
parent 7a422da589
commit cae76d1168
5 changed files with 35 additions and 9 deletions

View File

@@ -45,7 +45,7 @@ templ calendarEventTemplate(params CalendarPageParams) {
<div class="py-2 px-4 bg-strongpink text-white rounded-md">
<div>{ params.StartAtDate }</div>
if params.StartAtTime != "" && params.EndAtTime != "" {
<div class="text-sm whitespace-nowrap">From { params.StartAtTime } to { params.EndAtTime } (UTC)</div>
<div class="text-sm whitespace-nowrap">From { params.StartAtTime } to { params.EndAtTime } ({ params.TimeZone })</div>
}
</div>
</div>
@@ -54,7 +54,7 @@ templ calendarEventTemplate(params CalendarPageParams) {
<div class="font-semibold text-sm ml-2">Start date</div>
<div class="py-2 px-4 bg-strongpink text-white rounded-md">
<div class="whitespace-nowrap">{ params.StartAtDate }</div>
<div class="text-sm">{ params.StartAtTime } (UTC)</div>
<div class="text-sm">{ params.StartAtTime } ({ params.TimeZone })</div>
</div>
</div>
if params.EndAtTime != "" {
@@ -62,7 +62,7 @@ templ calendarEventTemplate(params CalendarPageParams) {
<div class="font-semibold text-sm ml-2">End date</div>
<div class="py-2 px-4 bg-strongpink text-white rounded-md">
<div class="whitespace-nowrap">{ params.EndAtDate }</div>
<div class="text-sm">{ params.EndAtTime } (UTC)</div>
<div class="text-sm">{ params.EndAtTime } ({ params.TimeZone })</div>
</div>
</div>
}

View File

@@ -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

View File

@@ -246,6 +246,7 @@ type CalendarPageParams struct {
OpenGraphParams
HeadParams
Details DetailsParams
TimeZone string
StartAtDate string
StartAtTime string
EndAtDate string

View File

@@ -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,

View File

@@ -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)
}