时间格式错误,月份不正确。

huangapple go评论86阅读模式
英文:

Go time.Format wrong month

问题

我想根据文件的修改日期来重命名一些文件。

当我使用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-02_15-04-05"

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

输出:

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

点击播放

英文:

I'd like to rename some files based on their modification date.

When I use the time.Format method to get the correct string, basically in this format YYYY-MM-DD_HH-MM-SS, the day has a trailing 0.

Am I doing something wrong here?

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

Output:
<pre>2013-07-23 21:32:39 +0200 CEST
2013-07-230_21-32-39</pre>

答案1

得分: 6

你的layout没有使用参考日期:将其更改为"2006-01-02_15-04-05"

当你使用"2006-01-20_15-04-05"时,格式化程序会看到2,并将其用作日期,然后保留额外的0,因为它与参考日期的任何部分都不匹配。

英文:

Your layout isn't using the reference date: change it to &quot;2006-01-02_15-04-05&quot;

When you use &quot;2006-01-20_15-04-05&quot;, the formatter see the 2, and uses that for the day, then keeps the extra 0 since it doesn't match any part of the reference date.

huangapple
  • 本文由 发表于 2014年9月25日 23:26:49
  • 转载请务必保留本文链接:https://go.coder-hub.com/26042350.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定