mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/1Panel-dev/1Panel.git
synced 2026-09-20 16:13:59 +08:00
51 lines
975 B
Go
51 lines
975 B
Go
package common
|
|
|
|
import (
|
|
"strings"
|
|
"sync"
|
|
"time"
|
|
|
|
"github.com/1Panel-dev/1Panel/core/utils/cmd"
|
|
)
|
|
|
|
func LoadTimeZoneByCmd() string {
|
|
loc := time.Now().Location().String()
|
|
if _, err := time.LoadLocation(loc); err != nil {
|
|
loc = "Asia/Shanghai"
|
|
}
|
|
std, err := cmd.NewCommandMgr().RunWithStdout("timedatectl")
|
|
if err != nil {
|
|
return loc
|
|
}
|
|
for _, line := range strings.Split(std, "\n") {
|
|
fields := strings.Fields(line)
|
|
if len(fields) != 5 || fields[0] != "Time" || fields[1] != "zone:" {
|
|
continue
|
|
}
|
|
if _, err := time.LoadLocation(fields[2]); err != nil {
|
|
return loc
|
|
}
|
|
return fields[2]
|
|
}
|
|
return loc
|
|
}
|
|
|
|
func LoadExpiredLocation() *time.Location {
|
|
var (
|
|
expiredLoc *time.Location
|
|
expiredLocOnce sync.Once
|
|
)
|
|
expiredLocOnce.Do(func() {
|
|
loc, err := time.LoadLocation(LoadTimeZoneByCmd())
|
|
if err != nil {
|
|
expiredLoc = time.Local
|
|
return
|
|
}
|
|
expiredLoc = loc
|
|
})
|
|
if expiredLoc == nil {
|
|
return time.Local
|
|
}
|
|
return expiredLoc
|
|
}
|