- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在将函数从 PHP 转换为 Go。
我想在 Go 中从国家代码获取时区。类似于PHP中的这个函数
public static array DateTimeZone::listIdentifiers ([ int $what = DateTimeZone::ALL [, string $country = NULL ]] )
Go 中哪个函数有类似的特性?
最佳答案
Go 标准库没有这方面的功能。寻找可以为您执行此操作的开源 Go 包。或者,既然是 Go,就自己写一个简单的 Go 函数。您必须下载 IANA tzdata 区域交叉引用文件。
例如,
package main
import (
"bufio"
"fmt"
"os"
"path/filepath"
"strings"
"time"
)
// Download IANA tzdata zone file:
// $ wget https://raw.githubusercontent.com/eggert/tz/master/zone1970.tab -O zone1970.tab
// countryZones returns a map of IANA Time Zone Database (tzdata) zone names
// by ISO 3166 2-character country code: map[country][]zone.
func countryZones(dir string) (map[string][]string, error) {
fname := filepath.Join(dir, `zone1970.tab`)
f, err := os.Open(fname)
if err != nil {
return nil, err
}
defer f.Close()
countries := make(map[string][]string)
s := bufio.NewScanner(f)
for s.Scan() {
line := s.Text()
if strings.HasPrefix(line, "#") {
continue
}
n := 3
fields := strings.SplitN(line, "\t", n+1)
if len(fields) < n {
continue
}
zone := fields[2]
for _, country := range strings.Split(fields[0], ",") {
country = strings.ToUpper(country)
zones := countries[country]
zones = append(zones, zone)
countries[country] = zones
}
}
if err = s.Err(); err != nil {
return nil, err
}
return countries, nil
}
func main() {
zones, err := countryZones("")
if err != nil {
fmt.Fprintln(os.Stderr, err)
return
}
utc := time.Now().UTC()
for _, country := range []string{"RU", "CA"} {
fmt.Println("Country:", country)
zones := zones[country]
fmt.Println(utc, "UTC")
for _, zone := range zones {
loc, err := time.LoadLocation(zone)
if err != nil {
fmt.Fprintln(os.Stderr, err)
continue
}
fmt.Println(utc.In(loc), zone)
}
}
}
输出:
$ wget https://raw.githubusercontent.com/eggert/tz/master/zone1970.tab -O zone1970.tab
--2018-07-15 09:44:02-- https://raw.githubusercontent.com/eggert/tz/master/zone1970.tab
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.184.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.184.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 17810 (17K) [text/plain]
Saving to: ‘zone1970.tab’
zone1970.tab 100%[==================================>] 17.39K --.-KB/s in 0.03s
2018-07-15 09:44:02 (582 KB/s) - ‘zone1970.tab’ saved [17810/17810]
$ go run zones.go
Country: RU
2018-07-15 17:40:03.09524872 +0000 UTC UTC
2018-07-15 19:40:03.09524872 +0200 EET Europe/Kaliningrad
2018-07-15 20:40:03.09524872 +0300 MSK Europe/Moscow
2018-07-15 20:40:03.09524872 +0300 MSK Europe/Simferopol
2018-07-15 20:40:03.09524872 +0300 +03 Europe/Volgograd
2018-07-15 20:40:03.09524872 +0300 +03 Europe/Kirov
2018-07-15 21:40:03.09524872 +0400 +04 Europe/Astrakhan
2018-07-15 21:40:03.09524872 +0400 +04 Europe/Saratov
2018-07-15 21:40:03.09524872 +0400 +04 Europe/Ulyanovsk
2018-07-15 21:40:03.09524872 +0400 +04 Europe/Samara
2018-07-15 22:40:03.09524872 +0500 +05 Asia/Yekaterinburg
2018-07-15 23:40:03.09524872 +0600 +06 Asia/Omsk
2018-07-16 00:40:03.09524872 +0700 +07 Asia/Novosibirsk
2018-07-16 00:40:03.09524872 +0700 +07 Asia/Barnaul
2018-07-16 00:40:03.09524872 +0700 +07 Asia/Tomsk
2018-07-16 00:40:03.09524872 +0700 +07 Asia/Novokuznetsk
2018-07-16 00:40:03.09524872 +0700 +07 Asia/Krasnoyarsk
2018-07-16 01:40:03.09524872 +0800 +08 Asia/Irkutsk
2018-07-16 02:40:03.09524872 +0900 +09 Asia/Chita
2018-07-16 02:40:03.09524872 +0900 +09 Asia/Yakutsk
2018-07-16 02:40:03.09524872 +0900 +09 Asia/Khandyga
2018-07-16 03:40:03.09524872 +1000 +10 Asia/Vladivostok
2018-07-16 03:40:03.09524872 +1000 +10 Asia/Ust-Nera
2018-07-16 04:40:03.09524872 +1100 +11 Asia/Magadan
2018-07-16 04:40:03.09524872 +1100 +11 Asia/Sakhalin
2018-07-16 04:40:03.09524872 +1100 +11 Asia/Srednekolymsk
2018-07-16 05:40:03.09524872 +1200 +12 Asia/Kamchatka
2018-07-16 05:40:03.09524872 +1200 +12 Asia/Anadyr
Country: CA
2018-07-15 17:40:03.09524872 +0000 UTC UTC
2018-07-15 15:10:03.09524872 -0230 NDT America/St_Johns
2018-07-15 14:40:03.09524872 -0300 ADT America/Halifax
2018-07-15 14:40:03.09524872 -0300 ADT America/Glace_Bay
2018-07-15 14:40:03.09524872 -0300 ADT America/Moncton
2018-07-15 14:40:03.09524872 -0300 ADT America/Goose_Bay
2018-07-15 13:40:03.09524872 -0400 AST America/Blanc-Sablon
2018-07-15 13:40:03.09524872 -0400 EDT America/Toronto
2018-07-15 13:40:03.09524872 -0400 EDT America/Nipigon
2018-07-15 13:40:03.09524872 -0400 EDT America/Thunder_Bay
2018-07-15 13:40:03.09524872 -0400 EDT America/Iqaluit
2018-07-15 13:40:03.09524872 -0400 EDT America/Pangnirtung
2018-07-15 12:40:03.09524872 -0500 EST America/Atikokan
2018-07-15 12:40:03.09524872 -0500 CDT America/Winnipeg
2018-07-15 12:40:03.09524872 -0500 CDT America/Rainy_River
2018-07-15 12:40:03.09524872 -0500 CDT America/Resolute
2018-07-15 12:40:03.09524872 -0500 CDT America/Rankin_Inlet
2018-07-15 11:40:03.09524872 -0600 CST America/Regina
2018-07-15 11:40:03.09524872 -0600 CST America/Swift_Current
2018-07-15 11:40:03.09524872 -0600 MDT America/Edmonton
2018-07-15 11:40:03.09524872 -0600 MDT America/Cambridge_Bay
2018-07-15 11:40:03.09524872 -0600 MDT America/Yellowknife
2018-07-15 11:40:03.09524872 -0600 MDT America/Inuvik
2018-07-15 10:40:03.09524872 -0700 MST America/Creston
2018-07-15 10:40:03.09524872 -0700 MST America/Dawson_Creek
2018-07-15 10:40:03.09524872 -0700 MST America/Fort_Nelson
2018-07-15 10:40:03.09524872 -0700 PDT America/Vancouver
2018-07-15 10:40:03.09524872 -0700 PDT America/Whitehorse
2018-07-15 10:40:03.09524872 -0700 PDT America/Dawson
$
关于datetime - 如何从国家/地区获取时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51346476/
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
在我的 MVC 应用程序中,我想显示用户访问网站的国家/地区、地区和城市。我怎样才能获取它们? 最佳答案 有几种方法。一种是要求用户与远程服务器共享他的位置。 https://developer.mo
有人知道Firebase电话身份验证是否适用于印度电话号码吗? 我成功实现并使用了美国号码(+1xxxxxxxxxx),但是尝试使用印度电话号码时未收到文本。不确定是否无法正常工作,或者我丢失了某些东
我想知道网站的原始国家/地区。我注意到Alexa网站通常可以检测网站的原始国家/地区。例如,Alexa可以检测到stackoverflow.com网站的原始国家/地区是美国,依此类推。 Alexa如何
我有一些文本,其中可能包含也可能不包含国家/地区名称。例如: ' Nigeria: Hotspot Network LTD Rural Telephony Feasibility Study' 这就是
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我有一组值,它们是我的 ajax 调用中的国家/地区代码 Handler.getCountryIdparam1, {callback:function(data){ // data will
我在我的应用程序中使用谷歌地点。一切正常,但我只想从输入中删除或忽略国家/地区。 例如,如果输入“arc”我有 Arcachon, France Arcueil, France Archamps, F
在 firebase 中创建项目时,我错误地选择了错误的国家/地区。 正如您在这里看到的: 这个问题可以解决吗? (我知道项目 ID 无法更改,而且我喜欢我选择的 ID...) 最佳答案 如the d
我有一个名为“Login”的Hive表。它包含以下列: UserID | UserName | UserIP | UserCountry | Date 在特定的一天(当天的所有登录信息),我想找出用户
我正在使用谷歌地图和地理编码API来检索用户输入邮政编码/邮政编码后的纬度/经度,但我想将邮政编码/邮政编码限制为该用户所在的国家/地区,这样我就不会得到结果多个结果。 是否有一种方法可以使用 jqu
是否可以获得维基百科上所有有关系的国家、地区和城市的列表?我找不到任何适合此任务的 API。解析我需要的所有信息的最简单方法是什么?PS:我知道,我可以从其他数据源获取此信息。但我对维基百科感兴趣..
我正在用两种语言制作一个网站。是否可以检查用户位于哪个国家,以便我可以自动为用户切换语言?我的菜单中还有一个带有 _GET 的切换选项。我一开始有这段代码: if (isset($_GET['taal
这是我的 Firebase 数据库结构: 看起来就是这样。有国家和用户。如果用户访问过某个国家/地区,则该国家/地区将存储在该用户的“VisitedCountries”子项中。例如用户 Angelin
这个问题在这里已经有了答案: Convert latitude and longitude coordinates to country name in R (2 个回答) 关闭9年前. 我有一个带有
我目前正在开发我的第一个iOS应用(phonegap / cordova)。我想知道是否需要采取某些步骤,以使其不仅可用于德国应用程序商店(这是我的语言),还可以提供给国际应用程序? 最佳答案 不,你
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
背景 我目前正在开发一个向用户提问的 Android 应用程序。目前我正在创建用于提问的模块。现在我正在开发一个地形模块,它将能够向用户询问有关某个国家/地区的各种问题,并向他们显示。 问题 对于本模
我正在使用 Cloudera 的 TwitterSource for Flume。我想按国家/地区获取具有某些关键字的推文。当我想获取来自荷兰的推文时,我不知道该与什么进行比较。我有以下结果,但没有任
大多数 Web 应用程序都有一个位置字段,用户可以在其中输入自己选择的位置。 如何根据输入的位置将用户分类到不同的国家/地区。 例如,我使用了 users.xml 的 Stack Overflow 转
我是一名优秀的程序员,十分优秀!