2017-07-28 123 views
1

我只想將日期值解析爲time.Time。 例如我有這種格式的日期:2016-03-31,我想解析它,如:time.Parse(FORMAT, "2016-03-31")如何僅解析日期到時間?

但它總是失敗。

什麼是正確的格式字符串來解析只有這種格式的日期?

我具有如下面例子中的代碼,它是在遊樂場也:https://play.golang.org/p/0MNLr9emZd

package main 

import (
    "fmt" 
    "time" 
) 

var dateToParse = "2016-03-31" 

func main() { 
    format := "2006-12-01" 
    parseDate(format) 
} 

func parseDate(format string) { 
    t, err := time.Parse(format, dateToParse) 
    if err != nil { 
     fmt.Println("Format:", format) 
     fmt.Println(err) 
     fmt.Println("") 
     return 
    } 
    fmt.Println("Works Format:", format) 
    fmt.Println(t) 
    fmt.Println("") 
} 

的輸出是這樣的:

Format: 2006-12-01 
parsing time "2016-03-31" as "2006-12-01": cannot parse "-31" as "2" 
+1

'format:=「2006-01-02」'https://golang.org/pkg/time/ – peterSO

+0

@peterSO Thanks,that works! – Azize

+0

我向你保證我已經閱讀過它,但我無法理解它是如何工作的。這是否意味着'2006'始終參考年份,'01'參考月份和'02'參考日期? – Azize

回答

2

Package time

這些是預定義的佈局在Time.Format和Time.Parse中使用。 在佈局中使用的參考時間是特定時間:

Mon Jan 2 15:04:05 MST 2006 

這是Unix時間1136239445.由於MST是GMT-0700,參考 時間可以被認爲是

01/02 03:04:05PM '06 -0700 

要定義你自己的格式,寫下參考時間 看起來像你的格式;請參閱ANSIC, StampMicro或Kitchen等常量的值。

對於yyyy-mm-dd使用format := "2006-01-02"