繁体   English   中英

提供格式的 Golang 时间解析返回错误的结果

[英]Golang Time parsing providing the format is returning wrong results

我有一个t time.Time ,我将它转换为一个特定的时区,并且我需要从中提取日期和时间(分别)作为字符串,如下所示:

数据应如下所示: 2006-09-23时间应如下所示: 05:06:23

我正在执行以下操作:

  1. t设置为所需的时区:
var err error
    loc, err := time.LoadLocation("America/Los_Angeles")

    if err != nil {
        return err
    } else {
        t = t.In(loc)
    }
  1. 设置格式并将其转换为字符串,以便我可以提取其值:
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-2017:10:30但我得到: 17:05:10的时间

通过时

time.Date(2022, time.Month(8), 26, 22, 7, 30, 0, time.FixedZone("Asia/Shanghai", 0)),

我希望2022-08-2606: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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM