Como formatar a hora atual usando um formato aaaaMMddHHmmss?

119

Estou tentando formatar a hora atual usando este formato yyyyMMddHHmmss.

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

Isso está gerando:

yyyyMMddHHmmss

Alguma sugestão?

Sergserg
fonte
Aqui está um exemplo de playground de como funciona a formatação de data. Isso é converter string em hora e imprimir uma hora em um formato específico. play.golang.org/p/qK6_9KNJNx
Nitesh

Respostas:

242

Usar

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

como Go usa as seguintes constantes para formatar a data, consulte aqui

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
)
Cris
fonte
56
na verdade, o formato de golang é muito estranho. por que não usar o estilo aaaammddHHiiss, mas usar o "" 2006/01/02/15/04/05 ", não entendi o verdadeiro motivo
Kewin
11
A string de layout é uma representação do carimbo de data / hora, 2 de janeiro 15:04:05 2006 MST. Uma maneira fácil de lembrar esse valor é que ele contém, quando apresentado nesta ordem, os valores (alinhados com os elementos acima): 1 2 3 4 5 6 -7 De golang.org/src/time/example_test.go
kakilangit
28
Técnica mnemônica para quem está fora dos Estados Unidos: imagine o que você estava fazendo em 2 de janeiro de 2006, apenas cinco segundos depois das 15h04, mas imagine isso acontecendo em Burkina Faso (UTC -7). Da próxima vez que você precisar formatar uma data, lembre-se deste evento em particular (!)
Enrico
3
Não conhecia o mnemônico sequencial, prático, mas vamos lá porque não é 1 de fevereiro ...
silasdavis
4
Então, tudo que tenho que lembrar é alinhar a data na ordem mês-dia-ano, depois colocar a hora no meio dela e colocar o fuso horário depois do ano, e fica muito fácil de lembrar. Arrumado. Alguém tem um mnemônico para lembrar a ordem deste mnemônico ..?
Joey Sabey
20

Esta pergunta surge no topo da pesquisa do Google quando você encontra "formato de hora atual golang", então, para todas as pessoas que desejam usar outro formato, lembre-se de que você sempre pode ligar para:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

Por exemplo, para obter a data e hora atual como "AAAA-MM-DDTHH: MM: SS" (por exemplo, 2019-01-22T12: 40: 55), você pode usar estes métodos com 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())

Como sempre, lembre-se de que os documentos são a melhor fonte de aprendizagem: https://golang.org/pkg/time/

Luis Cabrera Benito
fonte
4

O pacote de tempo em Golang tem alguns métodos que podem valer a pena examinar.

função (Time) Format

func (t Time) Format (string de layout) string Format retorna uma representação textual do valor de tempo formatado de acordo com o layout, que define o formato mostrando como o tempo de referência,

Mon Jan 2 15:04:05 -0700 MST 2006 seria exibido se fosse o valor; serve como exemplo da saída desejada. As mesmas regras de exibição serão aplicadas ao valor da hora. Layouts predefinidos ANSIC, UnixDate, RFC3339 e outros descrevem representações padrão e convenientes do tempo de referência. Para mais informações sobre os formatos e a definição da hora de referência, consulte a documentação do ANSIC e as demais constantes definidas neste pacote.

Fonte ( http://golang.org/pkg/time/#Time.Format )

Também encontrei um exemplo de definição de layout ( 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)
    }
TheZelus
fonte
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)

dá:

>> 2014-11-12 11:45:26.371 +0000 UTC
Cool.wen
fonte