Go 时间格式转换为strftime默认格式
在的wikipedia条目中,strftime格式如下所示: [10/Oct/2000:13:55:36-0700]是 已收到请求,默认情况下为strftime格式%d/%b/%Y:%H:%M:%S %z 当我尝试使用time.Format函数时:Go 时间格式转换为strftime默认格式,go,strftime,Go,Strftime,在的wikipedia条目中,strftime格式如下所示: [10/Oct/2000:13:55:36-0700]是 已收到请求,默认情况下为strftime格式%d/%b/%Y:%H:%M:%S %z 当我尝试使用time.Format函数时: package main import ( "fmt" "time" ) func main() { t, _ := time.Parse(time.UnixDate, "Tue Oct 10 13:55:36 PDT 2
package main
import (
"fmt"
"time"
)
func main() {
t, _ := time.Parse(time.UnixDate, "Tue Oct 10 13:55:36 PDT 2000")
fmt.Println(time.Time(t).Format("01/Feb/2006:15:04:05 -0700"))
}
我得到了输出[10/Feb/2000:13:55:36+0000]
,而我正期待[10/Oct/2000:13:55:36-0700]
(根据维基百科)。我的格式有什么问题
我检查那天是星期二,那天的时区是-7小时(PDT)。对于
格式
布局,Jan
而不是Feb
。比如说,
package main
import (
"fmt"
"time"
)
func main() {
t, err := time.Parse(time.UnixDate, "Tue Oct 10 13:55:36 PDT 2000")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(time.Time(t).Format("01/Jan/2006:15:04:05 -0700"))
}
输出:
10/Oct/2000:13:55:36 +0000
2000-10-10 13:55:36 -0700 PDT
10/Oct/2000:13:55:36 -0700
另外,对于时区,使用
ParseInLocation
package main
import (
"fmt"
"time"
)
func main() {
loc, err := time.LoadLocation("America/Los_Angeles")
if err != nil {
fmt.Println(err)
return
}
t, err := time.ParseInLocation(time.UnixDate, "Tue Oct 10 13:55:36 PDT 2000", loc)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t)
fmt.Println(time.Time(t).Format("01/Jan/2006:15:04:05 -0700"))
}
游乐场:
输出:
10/Oct/2000:13:55:36 +0000
2000-10-10 13:55:36 -0700 PDT
10/Oct/2000:13:55:36 -0700
对于
格式
布局,Jan
非Feb
。比如说,
package main
import (
"fmt"
"time"
)
func main() {
t, err := time.Parse(time.UnixDate, "Tue Oct 10 13:55:36 PDT 2000")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(time.Time(t).Format("01/Jan/2006:15:04:05 -0700"))
}
输出:
10/Oct/2000:13:55:36 +0000
2000-10-10 13:55:36 -0700 PDT
10/Oct/2000:13:55:36 -0700
另外,对于时区,使用
ParseInLocation
package main
import (
"fmt"
"time"
)
func main() {
loc, err := time.LoadLocation("America/Los_Angeles")
if err != nil {
fmt.Println(err)
return
}
t, err := time.ParseInLocation(time.UnixDate, "Tue Oct 10 13:55:36 PDT 2000", loc)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(t)
fmt.Println(time.Time(t).Format("01/Jan/2006:15:04:05 -0700"))
}
游乐场:
输出:
10/Oct/2000:13:55:36 +0000
2000-10-10 13:55:36 -0700 PDT
10/Oct/2000:13:55:36 -0700
可能的重复和这里的讨论我认为你关于时区的dup是正确的,但是这个月呢?请注意,月份坚持格式月份字符串。如下所示,使用Jan而不是Feb,但时区仍然可能是的副本,这里的讨论我认为您关于时区的dup是正确的,但是月份如何?请注意,月份坚持格式月份字符串。如下所示,使用Jan而不是Feb,但时区仍然是一个问题