Obtener la hora actual como cadena formateada en Ir?


Respuestas:


149

Usa la time.Now()función y el time.Format()método.

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

imprime 20110504111515, o al menos lo hizo hace unos minutos. (Estoy en horario de verano del este). Hay varios formatos de hora predefinidos en las constantes definidas en el paquete de hora.

Puede usarlo time.Now().UTC()si prefiere tener UTC que su zona horaria local.


15
Definitivamente me gusta la Kitchenconstante ( = "3:04PM")
tux21b

55
Gracias por esa información ¿Cómo sabe el paquete de tiempo al pasar "20060102150405", justo lo que estamos pasando, ya que no es una de las constantes predefinidas en el paquete de tiempo? ¿Cuál es el significado de esa fecha y hora en el paquete de tiempo (20060102150405)? Me parece un poco peculiar, pero mientras funcione, supongo que no importa mientras no cometamos un error al codificarlo. Supongo que no les pareció adecuado proporcionar una constante para ese formato y coincidir con el patrón de cadena.
brianoh 05 de

9
@brianoh: Ver golang.org/pkg/time/#Constants Es el momento "01/02 03:04:05 PM '06 -0700" Porque cada componente tiene un número diferente (1, 2, 3, etc.), Puede determinar a partir de los números qué componentes desea.
newacct

1
Tenga en cuenta que time.LocalTime () ya no existe: vea mi respuesta a continuación para que sea compatible con Go 1.0.3
Deleplace

71

¡Todas las otras respuestas son muy erróneas para alguien que viene de Google y busca "marca de tiempo en marcha"! AAAAMMDDhhmmss no es una "marca de tiempo".

Para obtener la "marca de tiempo" de una fecha en marcha ( número de segundos desde enero de 1970), la función correcta es .Unix () , y realmente devuelve un entero


8
Estoy de acuerdo; la pregunta debería titularse "fecha actual" no "marca de tiempo actual"
developerbmw

1
Aunque es tarde, creo que .Unix () debería apuntar a golang.org/pkg/time/#Time.Unix cuyo tipo de retorno es int64.
nacido libre

Si bien es técnicamente correcto, creo que muchos codificadores en la actualidad combinan la marca de tiempo con 'La hora actual en algún tipo de formato', por lo que ese título sería igualmente confuso para la mayoría.
Roger Hill

He sugerido una edición - Get current time as formatted string in Go?. Esperemos que alguien lo apruebe.
akki


32

Utilice las funciones time.Now () y time.Format () (ya que time.LocalTime () ya no existe a partir de Go 1.0.3)

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

Demostración en línea (con fecha fijada en el pasado en el patio de juegos, no importa)


66
Y puede usarlo simplemente como una cadena como esta:s := "Actual time is: "+time.Now().String()
Michael


2

Como eco de la respuesta de @Bactisme, la forma en que se recuperaría la marca de tiempo actual (en milisegundos, por ejemplo) es:

msec := time.Now().UnixNano() / 1000000

Recurso: https://gobyexample.com/epoch


0

https://golang.org/src/time/format.go especificado Para el tiempo de análisis 15se usa para horas, 04se usa para minutos, 05para segundos.

Para analizar la fecha 11, Jan, Januaryes desde hace meses, 02, Mon, Mondaypara el día del mes, 2006por año y por supuesto MSTpara la zona

Pero también puede usar este diseño, lo cual me parece muy simple. "Mon Jan 2 15:04:05 MST 2006"

    const layout = "Mon Jan 2 15:04:05 MST 2006"
    userTimeString := "Fri Dec 6 13:05:05 CET 2019"

    t, _ := time.Parse(layout, userTimeString)
    fmt.Println("Server: ", t.Format(time.RFC850))
    //Server:  Friday, 06-Dec-19 13:05:05 CET

    mumbai, _ := time.LoadLocation("Asia/Kolkata")
    mumbaiTime := t.In(mumbai)
    fmt.Println("Mumbai: ", mumbaiTime.Format(time.RFC850))
    //Mumbai:  Friday, 06-Dec-19 18:35:05 IST

MANIFESTACIÓN


-4

Para responder la pregunta exacta:

import "github.com/golang/protobuf/ptypes"

Timestamp, _ = ptypes.TimestampProto(time.Now())

Gracias Suran, esto es útil cuando la marca de tiempo debe enviarse a través de grpc
rajeshk
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.