我有一片值保持不同长度的时间戳。 他们中的大多数看起来像这样:
2006-01-02T15:04:05.000000Z
但其中一些更短:
2006-01-02T15:04:05.00000Z
2006-01-02T15:04:05.0000Z
如果我这样做:
str := dataSlice[j][0].(string)
layout := "2006-01-02T15:04:05.000000Z"
t, err := time.Parse(layout, str)
我收到的错误如下:
parsing time "2016-10-23T02:38:45.25986Z" as "2006-01-02T15:04:05.000000Z": cannot parse "" as ".000000"
parsing time "2016-10-23T21:43:59.0175Z" as "2006-01-02T15:04:05.000000Z": cannot parse ".0175Z" as ".000000"
我想完全像原来一样解析它们。 如何动态切换对应长度的布局? (为什么错误信息不同?)
答案 0 :(得分:2)
对于时间布局,如果小数秒是可选的,请在布局中使用9
而不是0
。例如,2006-01-02T15:04:05.00000Z
仅匹配小数点后5位数的时间。但是,2006-01-02T15:04:05.9Z
匹配小数点后任何位数的时间,包括零。
https://play.golang.org/p/QMD28aqv9E
Time.Format文档提供了示例,其中最后一个解释了这种行为。
答案 1 :(得分:1)
只需将000000
替换为999999
:
layout := "2006-01-02T15:04:05.999999Z"