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

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

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

这就是输出:

yyyyMMddHHmmss

有什么建议吗?

207886 次浏览

Golang中的时间包有一些方法可能值得一看。

func(时间)格式

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

. Format如何定义格式

星期一1月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)
}

使用

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
stdFracSecond0    = ".0", ".00" // trailing zeros included
stdFracSecond9    = ".9", ".99" // trailing zeros omitted
)

当你找到“golang当前时间格式”时,这个问题会出现在谷歌搜索的顶部,所以,对于所有想要使用其他格式的人,请记住,你总是可以调用:

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/

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

选项1:使用标准库

t.Format("20060102150405")
单位 Golang布局 例子 请注意
一年 06 21 81 01
一年 2006 2021, 1981, 0001
1月 一月,二月,十二月
1月 一月,二月,十二月
1 12 12
01 01 02 12
一天 周一 星期一,星期三,星期日
一天 我的 星期一,星期三,太阳
一天 2 1 2 11 31
一天 02 01 02 11 31 一个月的零垫日
一天 _2 ⎵1,⎵2,11,31 每个月的间隔日
一天 002 001, 002, 011, 031, 145, 365, 366 一年中的零垫日
一天 __2 ⎵⎵1,⎵⎵2,⎵11,⎵31,365,366 每年的空间填充日
一天中的一部分 点,点
一天中的一部分 点,点
小时24小时 15 00 01 12 23
小时12 h 3. 12 12
小时12 h 03 01 02 12
一分钟 4 0 4 10 35
一分钟 04 00 04 10 35
第二个 5 0,5,25
第二个 05 00, 05, 25
10-1到109 s 比上年.000000000 1, .199000000 包括后面的零
10-1到109 s 。9 .999999999 1, .199 省略后面的0
时区 MST Utc, mst, cet
时区 Z07 Z, +08 -05 Z代表UTC
时区 Z0700 Z, +0800, -0500 Z代表UTC
时区 Z070000 Z, +080000, -050000 Z代表UTC
时区 Z07:00 Z, +08:00, -05:00 Z代表UTC
时区 Z07:00:00 Z, +08:00:00, -05:00:00 Z代表UTC
时区 -07年 +00, +08, -05
时区 -0700年 +0000, +0800, -0500
时区 -070000年 +000000, +080000, -050000
时区 07:00 +00:00, +08:00, -05:00
时区 07:00:00 +00:00:00, +08:00:00, -05:00:00

在Golang 1.17+的分数秒(。999或.000),你可以使用,来代替.(,999或,000),但输出总是.!!看到https://github.com/golang/go/issues/48037

选项2:strftime Go实现

import strftime "github.com/itchyny/timefmt-go"
strftime.Format(t, "%Y%m%d%H%M%S")

查看更多信息

https://github.com/itchyny/timefmt-go

https://linux.die.net/man/3/strftime

运行标准库:时间

now := time.Now()
fmt.Println(now) // 2009-11-10 23:00:00 +0000 UTC m=+0.000000001
fmt.Println(now.Format("20060102150405"))
fmt.Println(now.Format("2006/01/02/15/04/05"))
fmt.Println(now.Format("2006-01-02 15:04:05"))
fmt.Println(now.Format("2006-01-02 15:04"))
fmt.Println(now.Format("2006/01/02 15:04:05"))
fmt.Println(now.Format("2006/01/02 15:04:05 (-0700)"))
fmt.Println(now.Format("2006年01月02日 15:04"))
fmt.Println(now.Format(time.Layout))   // 01/02 03:04:05PM '06 -0700
fmt.Println(now.Format(time.ANSIC))    // Mon Jan _2 15:04:05 2006
fmt.Println(now.Format(time.UnixDate)) // Mon Jan _2 15:04:05 MST 2006
fmt.Println(now.Format(time.RubyDate)) // Mon Jan 02 15:04:05 -0700 2006
fmt.Println(now.Format(time.RFC822))   // 02 Jan 06 15:04 MST
fmt.Println(now.Format(time.RFC850))   // Monday, 02-Jan-06 15:04:05 MST
fmt.Println(now.Format(time.Kitchen))  // 3:04PM
fmt.Println(now.Format(time.Stamp))    // Jan _2 15:04:05

< a href = " https://goplay。tools/snippet/46h-KLK_BcM" rel="nofollow noreferrer">Go playground . bat .