Obtener la hora actual como cadena formateada en Ir?
131
¿Cuál es la mejor manera de obtener la marca de tiempo actual en Go y convertirla en cadena? Necesito tanto la fecha como la hora, por ejemplo. AAAAMMDDhhmmss formato.
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.
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
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
56
Para facilitar la lectura, es mejor usar las constantes de RFC en el paquete de tiempo (creo)
Respuestas:
Usa la
time.Now()
función y eltime.Format()
método.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.fuente
Kitchen
constante (= "3:04PM"
)¡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
fuente
Get current time as formatted string in Go?
. Esperemos que alguien lo apruebe.Para facilitar la lectura, es mejor usar las constantes de RFC en el paquete de tiempo (creo)
fuente
Tuesday, 10-Nov-09 23:00:00 UTC
RFC3339 = "2006-01-02T15:04:05Z07:00"
play.golang.org/p/XmobwWSz5pN golang.org/pkg/timeUtilice las funciones time.Now () y time.Format () (ya que time.LocalTime () ya no existe a partir de Go 1.0.3)
Demostración en línea (con fecha fijada en el pasado en el patio de juegos, no importa)
fuente
s := "Actual time is: "+time.Now().String()
Encuentre más información en esta publicación: Obtenga la fecha y hora actual en varios formatos en golang
Esta es una muestra de los diferentes formatos que encontrarás en la publicación anterior:
fuente
Como eco de la respuesta de @Bactisme, la forma en que se recuperaría la marca de tiempo actual (en milisegundos, por ejemplo) es:
Recurso: https://gobyexample.com/epoch
fuente
https://golang.org/src/time/format.go especificado Para el tiempo de análisis
15
se usa para horas,04
se usa para minutos,05
para segundos.Para analizar la fecha
11
,Jan
,January
es desde hace meses,02
,Mon
,Monday
para el día del mes,2006
por año y por supuestoMST
para la zonaPero también puede usar este diseño, lo cual me parece muy simple.
"Mon Jan 2 15:04:05 MST 2006"
MANIFESTACIÓN
fuente
Para responder la pregunta exacta:
fuente