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

ser*_*erg 98 format time timestamp go

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

t := time.Now()
fmt.Println(t.Format("yyyyMMddHHmmss"))
Run Code Online (Sandbox Code Playgroud)

那是输出:

yyyyMMddHHmmss
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Cri*_*ris 198

使用

fmt.Println(t.Format("20060102150405"))
Run Code Online (Sandbox Code Playgroud)

由于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
)
Run Code Online (Sandbox Code Playgroud)

  • 实际上golang格式很奇怪.为什么不使用yyyymmddHHiiss风格,但使用""2006/01/02/15/04/05",我还没有得到它的真正原因 (36认同)
  • 对于美国以外的人的记忆技巧:计算你在2006年1月2日15:04之后的五秒钟所做的事情,但想象它发生在布基纳法索(UTC -7).下次需要格式化日期时,请记住此特定事件(!) (19认同)
  • @Kewin 同意你的观点。我什至对此很生气。“YYMMDD...”方式非常容易理解且易于记忆。看看,那是什么鬼——“20060102150405”?他们到底在想什么? (12认同)
  • 布局字符串表示时间戳,1月2日15:04:05 MST.记住这个值的一个简单方法是,当按此顺序显示时,它保持值(与上面的元素对齐):1 2 3 4 5 6 -7来自https://golang.org/src/time/ example_test.go (11认同)
  • 所以我只需要记住,就是把日期按月-日-年的顺序排列,然后把时间放在中间,把时区放在年份后面,就变得超级好记了。整洁的。任何人都有一个助记符来记住这个助记符的顺序..? (9认同)
  • 我不知道顺序助记符,方便,但是为什么不是 2 月 1 日... (5认同)
  • 我无法相信这一点,为什么要修复没有损坏的东西。从字面上看,没有人要求重新发明日期格式。 (3认同)
  • 是时候编写一个与落后的美国风格无关的适当的 Time 函数了。 (2认同)

Men*_*nyT 28

选项 1:Go 标准库

\n
t.Format("20060102150405")\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
单元Go语言布局例子笔记
0621, 81, 01
2006年2021, 1981, 0001
一月一月、二月、十二月
一月、二月、十二月
11, 2, 12
0101, 02, 12
周一周一、周三、周日
周一周一、周三、周日
21, 2, 11, 31
0201, 02, 11, 31月份中用零填充的日期
_2\xe2\x8e\xb51, \xe2\x8e\xb52, 11, 31一个月中的某天用空格填充
002001、002、011、031、145、365、366一年中的零填充日
__2\xe2\x8e\xb5\xe2\x8e\xb51、\xe2\x8e\xb5\xe2\x8e\xb52、\xe2\x8e\xb511、\xe2\x8e\xb531、365、366一年中的空格填充日
一天的一部分下午上午下午
一天的一部分下午上午下午
小时 24 小时1500, 01, 12, 23
小时12小时31, 2, 12
小时12小时0301, 02, 12
分钟40, 4 ,10, 35
分钟0400, 04 ,10, 35
第二50、5、25
第二0500, 05, 25
10 -1至 10 -9.0 .000000000.1, .199000000包括尾随零
10 -1至 10 -9.9 .999999999.1, .199省略尾随零
时区MST世界标准时间 (UTC)、中部标准时间 (MST)、欧洲中部时间 (CET)
时区Z07Z,+08,-05Z 代表 UTC
时区Z0700Z,+0800,-0500Z 代表 UTC
时区Z070000Z,+080000,-050000Z 代表 UTC
时区Z07:00Z,+08:00,-05:00Z 代表 UTC
时区Z07:00:00Z,+08:00:00,-05:00:00Z 代表 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
\n
\n

在 Golang 1.17+ 中,对于秒的一小部分(.999 或 .000),您可以使用(,999 或 ,000),代替.,但输出始终带有.!!! 请参阅https://github.com/golang/go/issues/48037

\n

选项 2:strftime Go 实现

\n
import strftime "github.com/itchyny/timefmt-go"\n
Run Code Online (Sandbox Code Playgroud)\n
strftime.Format(t, "%Y%m%d%H%M%S")\n
Run Code Online (Sandbox Code Playgroud)\n

查看更多信息

\n

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

\n

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

\n


Lui*_*ito 13

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

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()
Run Code Online (Sandbox Code Playgroud)

例如,要获取当前日期时间为“ 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())
Run Code Online (Sandbox Code Playgroud)

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


小智 9

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)
Run Code Online (Sandbox Code Playgroud)

给出:

>> 2014-11-12 11:45:26.371 +0000 UTC
Run Code Online (Sandbox Code Playgroud)


Car*_*ard 8

Go标准库:时间

\n
now := time.Now()\nfmt.Println(now) // 2009-11-10 23:00:00 +0000 UTC m=+0.000000001\nfmt.Println(now.Format("20060102150405"))\nfmt.Println(now.Format("2006/01/02/15/04/05"))\nfmt.Println(now.Format("2006-01-02 15:04:05"))\nfmt.Println(now.Format("2006-01-02 15:04"))\nfmt.Println(now.Format("2006/01/02 15:04:05"))\nfmt.Println(now.Format("2006/01/02 15:04:05 (-0700)"))\nfmt.Println(now.Format("2006\xe5\xb9\xb401\xe6\x9c\x8802\xe6\x97\xa5 15:04"))\nfmt.Println(now.Format(time.Layout))   // 01/02 03:04:05PM \'06 -0700\nfmt.Println(now.Format(time.ANSIC))    // Mon Jan _2 15:04:05 2006\nfmt.Println(now.Format(time.UnixDate)) // Mon Jan _2 15:04:05 MST 2006\nfmt.Println(now.Format(time.RubyDate)) // Mon Jan 02 15:04:05 -0700 2006\nfmt.Println(now.Format(time.RFC822))   // 02 Jan 06 15:04 MST\nfmt.Println(now.Format(time.RFC850))   // Monday, 02-Jan-06 15:04:05 MST\nfmt.Println(now.Format(time.Kitchen))  // 3:04PM\nfmt.Println(now.Format(time.Stamp))    // Jan _2 15:04:05\n
Run Code Online (Sandbox Code Playgroud)\n

Go playground

\n


The*_*lus 5

Golang中的Time包有一些值得一看的方法.

func(时间)格式

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

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)
    }
Run Code Online (Sandbox Code Playgroud)