解析日期时没有分隔符的"月份超出范围"

cod*_*der 2 time date go

任何想法如何让golang正确解析日期字符串,如31916 我不断超出范围错误一个月.

date, err := time.Parse("1206", "31916")
fmt.Println(date, err)
Run Code Online (Sandbox Code Playgroud)

当然我想将月份视为3而不是31就像它正在做的那样,但是我不知道如何在将分隔符添加到格式之外强制它在3个月停止.

pet*_*rSO 5

例如,

package main

import (
    "fmt"
    "time"
)

func parseDate(date string) (time.Time, error) {
    if len(date) == 5 {
        date = "0" + date
    }
    return time.Parse("010206", date)

}

func main() {
    date, err := parseDate("31916")
    fmt.Println(date, err)
    date, err = parseDate("031916")
    fmt.Println(date, err)
    date, err = parseDate("121916")
    fmt.Println(date, err)
}
Run Code Online (Sandbox Code Playgroud)

输出:

2016-03-19 00:00:00 +0000 UTC <nil>
2016-03-19 00:00:00 +0000 UTC <nil>
2016-12-19 00:00:00 +0000 UTC <nil>
Run Code Online (Sandbox Code Playgroud)