2014-09-25 56 views
1

我想根據修改日期重命名一些文件。Go time.Format錯誤的月份

當我使用time.Format方法以獲得正確的字符串,基本上以這種格式YYYY-MM-DD_HH-MM-SS,當天有一個尾隨0

有什麼我做錯了嗎?

 
    package main 

    import (
     "time" 
     "fmt" 
    ) 

    func main() { 

     loc, _ := time.LoadLocation("Europe/Berlin") 

     const layout = "2006-01-20_15-04-05" 

     t := time.Date(2013, 07, 23, 21, 32, 39, 0, loc) 
     fmt.Println(t) 
     fmt.Println(t.Format(layout)) 
    } 



click to play

輸出:

2013-07-23 21:32:39 +0200 CEST 
2013-07-230_21-32-39
+0

這個月還是一天?我可以在當天看到尾隨的'0'。或者你想讓你的月份變成'7'而不是'07'? – 2014-09-25 15:32:55

+2

順便說一下,在Go程序中使用前導零作爲數字文字的一部分時要小心。我在程序中看到了'07'字樣,本能地畏縮了。如果你不小心,你可能會誤用**八進制**。 https://golang.org/ref/spec#Integer_literals。在上面的例子中,這在技術上並不是問題,但是一般來說,只有當您確實指八進制時才使用八進制整數文字。 – dyoo 2014-09-25 17:59:09

+0

@ Ainar-G哦,對不起,當然,我的意思是當天尾隨0。 – fortrieb 2014-09-26 06:17:38

回答

5

layout沒有使用基準日:將其更改爲"2006-01-02_15-04-05"

當您使用"2006-01-20_15-04-05",格式見2,並將其用於當天,然後保留額外的0不符合參考日期的任何部分。