执行以下代码片段时,这些代码片段主要来自Go的时间包文档及其Parse函数示例:
package main import ( "time" "fmt" ) var shortForm = "2006-Jan-02" t, _ := time.Parse(shortForm, "2013-Feb-03") fmt.Println(t)
然后,您可以2013-02-03 00:00:00 +0000 UTC在控制台中获得正确的结果。
2013-02-03 00:00:00 +0000 UTC
但是,当你改变shortForm值略有下降,例如2007-Jan-02,2006-Feb-02或者2006-Jan-01,它甚至没有定期输出错误的结果,并且输出看起来,如0001-01-01 00:00:00 +0000 UTC,2013-03-01 00:00:00 +0000 UTC或2013-01-03 00:00:00 +0000 UTC。
shortForm
2007-Jan-02
2006-Feb-02
2006-Jan-01
0001-01-01 00:00:00 +0000 UTC
2013-03-01 00:00:00 +0000 UTC
2013-01-03 00:00:00 +0000 UTC
那么,为什么函数的行为如此奇怪?我该如何处理呢?每次使用该函数时,都应始终将layout变量定义为2006-Jan-02吗?
2006-Jan-02
谢谢。
的time.Parse和time.Format功能使用的数字在布局参数来标识哪个日期分量称为:
time.Parse
time.Format
1
Jan
January
2
3
15
4
5
6
2006
7
MST
所以,当你改变从布局字符串2006-Jan-02来2006-Jan-01,你说,一个月的时间,由字符串表示的两倍,从而导致意外结果。