diff --git a/main_static.go b/main_static.go index 9dc6a72f..2b66b5b4 100644 --- a/main_static.go +++ b/main_static.go @@ -4,7 +4,6 @@ package main import ( - "fmt" "os" "time" _ "time/tzdata" @@ -16,12 +15,27 @@ import ( func init() { go reaper.Reap() - if tz := os.Getenv("TZ"); tz != "" { - var err error - time.Local, err = time.LoadLocation(tz) + setLocaltime() +} - if err != nil { - fmt.Printf("error loading location '%s': %v\n", tz, err) +// set localtime to /etc/localtime if available +// or modify the system time with the TZ environment variable if it is provided +func setLocaltime() { + // load /etc/localtime without modifying it + if lt, err := os.ReadFile("/etc/localtime"); err == nil { + if t, err := time.LoadLocationFromTZData("", lt); err == nil { + time.Local = t + + return + } + } + + // use zoneinfo from time/tzdata and set location with the TZ environment variable + if tz := os.Getenv("TZ"); tz != "" { + if t, err := time.LoadLocation(tz); err == nil { + time.Local = t + + return } } }