我正在尝试格式化一系列日期,例如:

  • 2013年3月12日,下午3点看起来像:2013-03-12-15.txt
  • 2013年3月12日,凌晨4点看起来像:2013-03-12-4.txt

  • 使用golang和Time
    package main
    
    import (
        "time"
        "fmt"
    )
    
    const layout = "2006-01-02-15.txt"
    
    func main() {
        t := time.Date(2013, time.March, 12, 4, 0, 0, 0, time.UTC)
        fmt.Println(t.Format(layout))
    }
    

    不幸的是,哪个数字在单位小时前加上了零:2013-03-12-04.txt
    是否有一种惯用的方式来达到所需的输出,或者我必须使用String软件包对自己进行一些调整?

    在此先感谢您的帮助 !

    最佳答案

    如果您需要24小时格式,并且不希望hour < 10的前导零,我只会看到自定义字符串格式:

    date := fmt.Sprintf("%d-%d-%d-%d", t.Year(), t.Month(), t.Day(), t.Hour())
    

    当然,这不是在Go中格式化日期的惯用方式。

    更新(感谢您的评论):
    t := time.Now()
    date := fmt.Sprintf("%s-%d.txt", t.Format("2006-01-02"), t.Hour())
    fmt.Println(date)
    

    10-06 10:19
    查看更多