Datetime 时间。解析错误,我做错了什么?

Datetime 时间。解析错误,我做错了什么?,datetime,parsing,go,Datetime,Parsing,Go,我遇到了关于golang中使用时间包进行datestring解析的最奇怪的问题 错误: parsing time "07-20-2018" as "2006-01-02": cannot parse "0-2018" as "2006" 代码块: log.Println(datestring) //07-20-2018 date, err := time.Parse("2006-01-02", datestring) log.Println(err) //parsing time "07-20

我遇到了关于golang中使用时间包进行datestring解析的最奇怪的问题

错误:

parsing time "07-20-2018" as "2006-01-02": cannot parse "0-2018" as "2006"
代码块:

log.Println(datestring) //07-20-2018
date, err := time.Parse("2006-01-02", datestring)
log.Println(err) //parsing time "07-20-2018" as "2006-01-02": cannot parse "0-2018" as "2006"
log.Println(date) //parsing time "07-20-2018" as "2006-01-02": cannot parse "0-2018" as "2006"
我完全不知道这个问题指的是什么,字符串是用gorilla mux从golang中的URI解析出来的

datestring, _ := vars["date"] //some/path/{date}, date is 07-20-2018

有什么想法吗?

很明显。您正在尝试将mm dd yyyy解析为yyyy-mm-dd


一个简单的解决方案:

package main

import (
    "fmt"
    "time"
)

func main() {
    datestring := "07-20-2018"
    fmt.Println(datestring)
    date, err := time.Parse("01-02-2006", datestring)
    fmt.Println(date, err)
}
游乐场:

输出:

07-20-2018
2018-07-20 00:00:00 +0000 UTC <nil>
07-20-2018
2018-07-20 00:00:00+0000 UTC


再见。

谢谢!我没有意识到解析的输入应该是输入时间的格式,而不是您希望日期的输出格式。@BrandonHawkinson:
time。解析需要输入格式,以便解决歧义。例如,是“10-11-12”mm-dd-yy(美国)、dd-mm-yy(欧洲)、yy-mm-dd(ISO)等。