go 神奇的错误 time.Now().Format("2006-01-02 13:04:05") 比北京时间大8小时

困倦的时候写了个个获取本地时间,打印总比当前时间大8小时,找了很久原因

 

package main

import (
    "fmt"
    "time"
)

func main()  {
    now := time.Now()
    fmt.Println(now)
    fmt.Println("nowStr:", now.Format("2006-01-02 13:04:05"))
}

输出

2023-02-23 15:40:49.9662692 +0800 CST m=+0.003123801
nowStr: 2023-02-23 23:40:49    

发现是东八区时间,但是格式化打印结果就大了8小时

根因:小时格式化字符串,小时占位符应该是15,不是13,写成13 自动被解读成1和3,1=01为月份,当时是2月份解读成2,3不属于占位符作为字符串直接输出,所以如上测试正好看上去是多了8小时,实际上只是小时位里面写了个月份+字符“3”.... 坑死我了,还以为是时区哪里搞错了.....啊啊啊啊啊啊啊啊啊啊

备注:标准占位符年:2006, 月:01, 日:02, 时:15,分:04, 秒:05.

证实如上猜测:

 

fmt.Println("nowStr:", now.Format("2006-01-02 14:04:05"))

 

输出nowStr: 2023-02-23 249:49:10  其中2为月份,49为分钟。。。。。。。。。。

阿弥陀佛!!!!!!!!

 

 

posted on 2023-02-23 15:58  zhangmingda  阅读(250)  评论(0编辑  收藏  举报

导航