[英]Golang Time parsing providing the format is returning wrong results
我有一个t time.Time
,我将它转换为一个特定的时区,并且我需要从中提取日期和时间(分别)作为字符串,如下所示:
数据应如下所示: 2006-09-23
时间应如下所示: 05:06:23
我正在执行以下操作:
t
设置为所需的时区:var err error
loc, err := time.LoadLocation("America/Los_Angeles")
if err != nil {
return err
} else {
t = t.In(loc)
}
format := "2006-01-02 15:03:04"
timestamp := t.Format(format)
timestampSlice := strings.Fields(timestamp)
fmt.Println(timestampSlice[0])
fmt.Println(timestampSlice[1])
但我得到了意想不到的时间结果(日期工作正常):
通过时
time.Date(2021, time.Month(2), 21, 1, 10, 30, 0, time.UTC)
我希望2021-02-20
和17:10:30
但我得到: 17:05:10
的时间
通过时
time.Date(2022, time.Month(8), 26, 22, 7, 30, 0, time.FixedZone("Asia/Shanghai", 0)),
我希望2022-08-26
和06:07:30
但我得到: 15:03:07
我究竟做错了什么? 以格式传递的值对解析有影响吗? 我认为格式只是为了表明结果的外观
从文档:
// Jan 2 15:04:05 2006 MST
// 1 2 3 4 5 6 -7
因此,格式2006-01-02 15:03:04
将被解析为years-months-days hours-hours-minutes
。 请注意, 15
指的是小时 (00-23), 03
指的是小时 (1-12), 04
指的是分钟。
所以正确的格式是
format := "2006-01-02 15:04:05"
您可以在此处了解有关格式化时间的更多信息: https://pkg.go.dev/time#example-Time.Format
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.