我想编写一个方法,time.Format()使用调用接受的公共时区填充Go语言数组,以便在HTML模板中使用(表单选择允许他们读取和选择他们的时区).有一个共同的方法来做到这一点?
要获取时区列表,您可以使用以下内容:
package main
import (
"fmt"
"io/ioutil"
"strings"
)
var zoneDirs = []string{
// Update path according to your OS
"/usr/share/zoneinfo/",
"/usr/share/lib/zoneinfo/",
"/usr/lib/locale/TZ/",
}
var zoneDir string
func main() {
for _, zoneDir = range zoneDirs {
ReadFile("")
}
}
func ReadFile(path string) {
files, _ := ioutil.ReadDir(zoneDir + path)
for _, f := range files {
if f.Name() != strings.ToUpper(f.Name()[:1]) + f.Name()[1:] {
continue
}
if f.IsDir() {
ReadFile(path + "/" + f.Name())
} else {
fmt.Println((path + "/" + f.Name())[1:])
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
...
Run Code Online (Sandbox Code Playgroud)
Go的时间pkg使用时区数据库。
您可以像这样加载时区位置:
loc, err := time.LoadLocation("America/Chicago")
if err != nil {
// handle error
}
t := time.Now().In(loc)
Run Code Online (Sandbox Code Playgroud)
该Format功能与设置时区无关,该功能采用固定的参考时间,可用于设置日期格式。看一下pkg docs的时间。
例如:
fmt.Println(t.Format("MST")) // outputs CST
Run Code Online (Sandbox Code Playgroud)
这是一个正在运行的示例