-3

为什么第一种格式有效,而第二种无效

package main

import (
    "fmt"
    "time"
)

func main() {

    date := "21/07/1993"
    in := "02/01/2006"
    out := "02-01-2006"
    dt, err := time.Parse(in, date)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(dt.Format(out))

    date = "21/07/1993"
    in = "02/01/2003"
    out = "02-01-2003"
    dt, err = time.Parse(in, date)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(dt.Format(out))
}

输出

21-07-1993
parsing time "21/07/1993" as "02/01/2003": cannot parse "93" as "0"
01-01-1012

https://play.golang.org/p/Ht0XZVs54ta

4

3 回答 3

2

这是一个常见的混淆。日期格式不是示例日期。每个日期元素由格式中的特定数字表示。2006 表示年,02 表示日,01 表示月。所以 2003 不是有效格式的一部分。

于 2019-09-27T19:29:25.893 回答
2

您必须在格式字符串中使用 2006 年。

于 2019-09-27T19:29:39.753 回答
0

我认为这很简单,因为数字 21 不能是一个月。因为它不可能是一个月,所以解析器可以推断它是一天。但是,在您的第二个示例中,“02”可能是一个月或一天。您必须将数据整理成一种格式,以便更清楚地了解哪一天是哪一个月。

于 2019-09-27T19:32:21.833 回答