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

问题描述 投票:0回答:6

我正在尝试使用此格式格式化当前时间

yyyyMMddHHmmss

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

即输出:

yyyyMMddHHmmss

有什么建议吗?

time go format timestamp
6个回答
413
投票

使用

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
)

45
投票

当您找到“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/


31
投票

转到标准库

更新为 Go 1.23

t.Format("20060102150405")
单位 Golang 布局 示例 注意
年份 06 21、81、01
年份 2006年 2021, 1981, 0001
一月 一月、二月、十二月
一月 一月、二月、十二月
1 1,2,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小时 3 1,2,12
12小时 03 01,02,12
分钟 4 0、4、10、35
分钟 04 00,04,10,35
第二个 5 0、5、25
第二个 05 00、05、25
十分之一秒 .0 .1 包含尾随零(
.
,
毫秒 .000 .100 包含尾随零(
.
,
纳秒 .000000000 .199000000 包含尾随零(
.
,
十分之一秒 .9 .1 省略尾随零(
.
,
毫秒 .999 .19 省略尾随零(
.
,
纳秒 .999999999 .199 省略尾随零(
.
,
时区 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

14
投票
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

8
投票

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

func(时间)格式

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

2006 年 1 月 2 日星期一 15:04:05 -0700 MST 如果是值,则会显示;它作为所需输出的示例。然后,相同的显示规则将应用于时间值。预定义布局 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)
    }

8
投票

转到标准库:时间

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

去游乐场

© www.soinside.com 2019 - 2024. All rights reserved.