我想写一个方法,用time.Format()调用接受的常见时区填充Go Language数组,以供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:])
        }
    }
}

输出:
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
...

关于go - 获取Go中有效时区的列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40120056/

10-09 16:41