如何使用yyyyMMddHHmmss格式格式化当前时间?


118

我正在尝试使用这种格式来格式化当前时间yyyyMMddHHmmss

t := time.Now()
fmt.Println(t.Format("yyyyMMddHHmmss"))

输出:

yyyyMMddHHmmss

有什么建议?


这是一个有关日期格式如何工作的示例。这既将字符串转换为时间,又以特定格式打印时间。play.golang.org/p/qK6_9KNJNx
Nitesh

Answers:


241

fmt.Println(t.Format("20060102150405"))

由于Go使用以下常量来格式化日期,请参阅此处

const (
    stdLongMonth      = "January"
    stdMonth          = "Jan"
    stdNumMonth       = "1"
    stdZeroMonth      = "01"
    stdLongWeekDay    = "Monday"
    stdWeekDay        = "Mon"
    stdDay            = "2"
    stdUnderDay       = "_2"
    stdZeroDay        = "02"
    stdHour           = "15"
    stdHour12         = "3"
    stdZeroHour12     = "03"
    stdMinute         = "4"
    stdZeroMinute     = "04"
    stdSecond         = "5"
    stdZeroSecond     = "05"
    stdLongYear       = "2006"
    stdYear           = "06"
    stdPM             = "PM"
    stdpm             = "pm"
    stdTZ             = "MST"
    stdISO8601TZ      = "Z0700"  // prints Z for UTC
    stdISO8601ColonTZ = "Z07:00" // prints Z for UTC
    stdNumTZ          = "-0700"  // always numeric
    stdNumShortTZ     = "-07"    // always numeric
    stdNumColonTZ     = "-07:00" // always numeric
)

56
实际上,golang格式很奇怪。为什么不使用yyyymmddHHiiss样式,而是使用““ 2006/01/02/15/04/05”,我还没有真正的理由
Kewin,2016年

11
布局字符串表示时间戳,即MST 2006年1月2日15:04:05。记住此值的一种简单方法是,当按此顺序显示该值时,该值保持不变(与上面的元素对齐):1 2 3 4 5 6 -7来自golang.org/src/time/example_test.go
kakilangit17年

28
面向美国境外人士的助记符技术:算出您在2006年1月2日(15:04之后仅五秒钟)正在做什么,但可以想象一下它发生在布基纳法索(UTC -7)。下次您需要格式化日期时,只需记住该特定事件(!)
Enrico

3
我不知道连续的助记符,派上用场了,但是为什么它不是2月1日呢?
silasdavis

4
因此,我要记住的是,按月日日的顺序排列日期,然后将时间停留在中间,并将时区放在年份之后,这样就变得非常容易记住。整齐。有人记住该助记符的顺序了吗?
Joey Sabey

20

当您找到“ golang当前时间格式”时,此问题会出现在Google搜索的顶部,因此,对于所有希望使用其他格式的人,请记住,您可以随时致电:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

例如,要将当前日期时间获取为“ YYYY-MM-DDTHH:MM:SS”(例如2019-01-22T12:40:55),可以将以下方法与fmt.Sprintf结合使用:

t := time.Now()
formatted := fmt.Sprintf("%d-%02d-%02dT%02d:%02d:%02d",
        t.Year(), t.Month(), t.Day(),
        t.Hour(), t.Minute(), t.Second())

与往常一样,请记住文档是最好的学习资源:https//golang.org/pkg/time/


4

Golang中的Time package有一些可能值得一看的方法。

func(时间)格式

func(t Time)Format(布局字符串)string Format返回根据布局格式化的时间值的文本表示,该时间值通过显示参考时间来定义格式,

如果该值为该值,则将显示Mon Jan 2 15:04:05 -0700 MST 2006;它作为所需输出的示例。然后,将相同的显示规则应用于时间值。预定义的布局ANSIC,UnixDate,RFC3339和其他布局描述了参考时间的标准和便捷表示形式。有关格式和参考时间的定义的更多信息,请参见ANSIC文档以及此程序包定义的其他常量。

来源(http://golang.org/pkg/time/#Time.Format

我还找到了定义布局的示例(http://golang.org/src/pkg/time/example_test.go

func ExampleTime_Format() {
        // layout shows by example how the reference time should be represented.
        const layout = "Jan 2, 2006 at 3:04pm (MST)"
        t := time.Date(2009, time.November, 10, 15, 0, 0, 0, time.Local)
        fmt.Println(t.Format(layout))
        fmt.Println(t.UTC().Format(layout))
        // Output:
    // Nov 10, 2009 at 3:00pm (PST)
        // Nov 10, 2009 at 11:00pm (UTC)
    }

4
import("time")

layout := "2006-01-02T15:04:05.000Z"
str := "2014-11-12T11:45:26.371Z"
t, err := time.Parse(layout, str)
if err != nil {
    fmt.Println(err)
}
fmt.Println(t)

给出:

>> 2014-11-12 11:45:26.371 +0000 UTC
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.