¿Cómo formatear la hora actual usando un formato aaaaMMddHHmmss?

118

Estoy intentando formatear la hora actual usando este formato yyyyMMddHHmmss.

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

Eso está produciendo:

yyyyMMddHHmmss

¿Alguna sugerencia?

sergserg
fuente
Aquí hay una muestra del patio de recreo de cómo funciona el formato de fecha. Esto es tanto convertir una cadena en tiempo como imprimir un tiempo en un formato específico. play.golang.org/p/qK6_9KNJNx
Nitesh

Respuestas:

241

Utilizar

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

como Go usa las siguientes constantes para formatear la fecha, consulte aquí

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
fuente
56
En realidad, el formato de golang es muy extraño. ¿Por qué no usar el estilo aaaammddHHiiss, pero usar el "" 2006/01/02/15/04/05 ", no entiendo la verdadera razón
Kewin
11
La cadena de diseño es una representación de la marca de tiempo, 2 de enero 15:04:05 2006 MST. Una manera fácil de recordar este valor es que contiene, cuando se presenta en este orden, los valores (alineados con los elementos anteriores): 1 2 3 4 5 6 -7 De golang.org/src/time/example_test.go
kakilangit
28
Técnica mnemotécnica para quienes se encuentran fuera de los EE. UU.: Imagina lo que estabas haciendo el 2 de enero de 2006, solo cinco segundos después de las 15:04, pero imagina que sucede en Burkina Faso (UTC -7). La próxima vez que necesite formatear una fecha, recuerde este evento en particular (!)
Enrico
3
No sabía el mnemónico secuencial, útil, pero vamos, ¿por qué no es el 1 de febrero ...?
silasdavis
4
Así que todo lo que tengo que recordar es alinear la fecha en el orden mes-día-año, luego colocar la hora en el medio y poner la zona horaria después del año, y se vuelve muy fácil de recordar. Ordenado. ¿Alguien tiene un mnemónico por recordar el orden de este mnemónico ...?
Joey Sabey
20

Esta pregunta aparece en la parte superior de la búsqueda de Google cuando encuentra "formato de hora actual de golang", por lo que, para todas las personas que quieran usar otro formato, recuerde que siempre puede llamar a:

t := time.Now()

t.Year()

t.Month()

t.Day()

t.Hour()

t.Minute()

t.Second()

Por ejemplo, para obtener la fecha y hora actual como "AAAA-MM-DDTHH: MM: SS" (por ejemplo, 2019-01-22T12: 40: 55), puede utilizar estos métodos con 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 siempre, recuerde que los documentos son la mejor fuente de aprendizaje: https://golang.org/pkg/time/

Luis Cabrera Benito
fuente
4

El paquete de tiempo en Golang tiene algunos métodos que vale la pena buscar.

formato func (hora)

func (t Hora) Formato (cadena de diseño) cadena El formato devuelve una representación textual del valor de tiempo formateado de acuerdo con el diseño, que define el formato mostrando cómo el tiempo de referencia,

Lunes 2 de enero 15:04:05 -0700 MST 2006 se mostraría si fuera el valor; sirve como ejemplo del resultado deseado. A continuación, se aplicarán las mismas reglas de visualización al valor de tiempo. Los diseños predefinidos ANSIC, UnixDate, RFC3339 y otros describen representaciones estándar y convenientes del tiempo de referencia. Para obtener más información sobre los formatos y la definición del tiempo de referencia, consulte la documentación de ANSIC y las demás constantes definidas por este paquete.

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

También encontré un ejemplo de cómo definir el diseño ( 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
fuente
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)

da:

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