Go time.Parse 报错【解决方案】

1,187 阅读1分钟

这个第一个参数 layout,不能随便写个时间

如果随便填个时间,例如:2019-05-16 23:23:45

可能会报err, 使用:"2006-01-02 15:04:05" 这个就不会报错。

  • 解决方案:

string 转 time:

time, err := time.ParseInLocation("2006-01-02 15:04:05", req.UploadTime, time.Local)

有空我看下 time 这里的源码,分析一下 为什么会解析失败。先记录下


问题解了,因为这天是 Go 的生日。。。 匹配策略也是根据这个日期匹配的,也符合预期。 不然怎么知道每个数字对应的是 月 还是 日 还是别的呢? 通过固定的日期,匹配出所需要的格式。其实也符合设计的预期。算是个小彩蛋吧。

  • Time、String 互转方法:
func Time2Str(t *time.Time) string {
	return t.Format("2006-01-02 15:04:05")
}

func Str2Time(timeStr string) time.Time {
	t, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr, time.Local)
	return t
}