我的时区ID如下:(GMT+01:00) Brussels, Copenhagen, Madrid, Paris
。从这个字符串中获取time.Location
的最佳方法是什么?
答案 0 :(得分:2)
您需要从字符串中提取区域名称,然后将其转换为位置。
您可以使用正则表达式执行第一部分,后者使用time.LoadLocation
package main
import (
"fmt"
"regexp"
"time"
)
func main() {
re := regexp.MustCompile(`^\(([A-Z]+)[+-:0-9]+\).*`)
input := "(GMT+01:00) Brussels, Copenhagen, Madrid, Paris."
matches := re.FindStringSubmatch(input)
fmt.Println("Found timezone string: ", matches[1])
l, _ := time.LoadLocation(matches[1])
fmt.Println("Found timezone:", l)
fmt.Println(time.Now())
fmt.Println(time.Now().In(l))
}
打印出来:
$ go run ./main.go
Found timezone string: GMT
Found timezone: GMT
2018-01-24 10:30:28.989832073 +0100 CET
2018-01-24 09:30:28.989860913 +0000 GMT
警告:我忽略了错误和不匹配的正则表达式,你可能不应该这样做。