2017-04-03 173 views
-5

我是Go的新手,我正在解析一个nginx时间格式的字符串。你可以在这里查看我的代码:Go time.Parse()获取“月份超出范围”错误

package main 
 

 
import (
 
\t "time" 
 
\t "log" 
 
\t "fmt" 
 
) 
 

 
func main(){ 
 
\t //nginx time format 
 
\t nginx_time :="03/Apr/2017:08:29:05 +0800" 
 
\t t,err:=time.Parse("02/Jan/2016:15:04:05 MST",nginx_time) 
 

 
\t if err != nil { 
 
\t \t log.Fatal(err) 
 
\t } 
 

 
\t fmt.Println(t.Format("2006-01-02 15:04:05")) 
 
}

我收到以下错误:

GOROOT=/usr/local/go 
 
GOPATH=/usr/local/share/go:/Users/sinopex/goroot:/Users/sinopex/goroot 
 
/usr/local/go/bin/go build -o "/private/var/folders/5b/yf1f_9lj06bfvqvcq2h9myph0000gn/T/Build 1.go and rungo" /Users/sinopex/goroot/src/github.com/sinopex/golang/example/test/1.go 
 
"/private/var/folders/5b/yf1f_9lj06bfvqvcq2h9myph0000gn/T/Build 1.go and rungo" 
 
2017/04/03 12:17:12 parsing time "03/Apr/2017:08:29:05 +0800": month out of range 
 
http://stackoverflow.com/questions/ask# 
 
Process finished with exit code 1

任何想法对我在做什么错误?

谢谢。

+0

[解析在golang日期字符串](http://stackoverflow.com/questions/25845172/parsing-date-string-in-golang) – RayfenWindspear

回答

6

您解析格式的参考格式和输入格式不匹配,在两个地方:

  1. 在参考格式今年应该是2006

  2. 的时区偏移量是由指定号,而不是由区名称:-0700

所以:

t, err := time.Parse("02/Jan/2006:15:04:05 -0700", nginx_time) 

play.golang:

+0

该固定的可能的复制我的问题,谢谢 – Sinopex