Go中的奇怪行为.Go中的解析函数

Bla*_*ard 3 time datetime go

当您执行以下代码片段时,它主要来自Go的时间包文档及其Parse函数示例:

package main

import (
   "time"
   "fmt"
)

var shortForm = "2006-Jan-02"
t, _ := time.Parse(shortForm, "2013-Feb-03")
fmt.Println(t)
Run Code Online (Sandbox Code Playgroud)

然后,您可以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 UTC2013-01-03 00:00:00 +0000 UTC.

那么为什么函数表现得如此奇怪呢?我该如何处理它?每次我使用该函数时,我是否应该始终将布局变量定义为2006-Jan-02

谢谢.

Jam*_*dge 5

time.Parsetime.Format功能使用的数字在布局参数来标识哪个日期分量称为:

  • 1:月份(或者可以在单词中显示为Jan/ January)
  • 2: 天
  • 3:小时(或1524小时制)
  • 4:分钟
  • 5:第二
  • 6:年(或20064年级)
  • 7:时区(或者MST时区代码).

所以,当你从改变布局的字符串2006-Jan-022006-Jan-01,你说,一个月的时间,由字符串表示的两倍,从而导致意外结果.