go time.Parse,格式“02/01/2006”有效,但“02/01/2003”无效

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


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


蛊毒传说
浏览 101回答 3
3回答

狐的传说

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

慕码人8056858

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

德玛西亚99

您必须在格式字符串中使用 2006 年。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go