首页 > 解决方案 > 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

标签: go

解决方案


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


推荐阅读