我是golang的新手,并尝试将从oracle DB接收的字符串日期转换为golang中的time.Time。

这里是原始链接:https://play.golang.org/p/z3OyC4-DTFA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
timeTest, err := time.Parse("22-JAN-06","26-JAN-17")
if err != nil {
    fmt.Printf("

paymentDateAfter: %v

", timeTest)
} else {
    fmt.Printf("

paymentDateErr: %v

", err)
}

谁能帮我理解这个问题。 我尝试搜索它,并在堆栈溢出中找到了许多答案,但是对于这种格式,它们都没有。

谢谢


如文档中所述,time.Parse中的layout时间需要代表以下年份/月份/天/等...:Mon Jan 2 15:04:05 -0700 MST 2006

但是,您正在使用Jan 22 2006

如果将代码更改为以下代码,则可以使用:

1
2
3
4
5
6
7
8
9
func main() {
    test, err := time.Parse("2-Jan-2006","26-MAR-2018")
    if err != nil {
        panic(err)
    }

    fmt.Println(test)
    // Prints: 2018-03-26 00:00:00 +0000 UTC
}

注意:布局中的月份(Jan)区分大小写,但是要分析的字符串中的月份(MAR)不区分大小写。

  • 日期是否为" 06年2月2日"怎么样,请注意所有大写字母都为月份
  • 它也起作用,匹配不区分大小写,Ive更新了答案。 请注意,布局字符串仍为Jan