2011-05-04 26 views

Respuesta

79

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

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

imprime 20110504111515, o por lo menos lo hizo hace unos minutos. (Estoy en Eastern Daylight Time.) Existen varios formatos de tiempo predefinidos en el constants definidos en el paquete de tiempo.

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

+10

Definitivamente me gusta la constante 'Kitchen' (' = "3:04 PM" ') – tux21b

+3

Gracias por esa información. ¿Cómo sabe el paquete de tiempo al pasar "20060102150405", lo que estamos aprobando, 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 siempre y cuando funcione, supongo que no importa, siempre y cuando no cometamos un error al codificarlo. Supongo que no consideraron que proporcionen una constante para ese formato, y coinciden con el patrón de cadena. – brianoh

+5

@brianoh: ver http://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

31

Uso de las funciones time.Now() y time.Format() (como no existe time.localtime() ya partir de Go 1.0.3)

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

Online demo (con la fecha fijada en el pasado en el patio de recreo, no importa)

+5

Y puede usarlo simplemente como una cadena como esta: '' 's: =" El tiempo real es: "+ time.Now(). String() '' ' – Michael

29

para facilitar la lectura, la mejor manera de utilizar las constantes RFC en el paquete de tiempo (mi piensa)

import "fmt" 
import "time" 

func main() { 
    fmt.Println(time.Now().Format(time.RFC850)) 
} 
+3

Exactamente para lo que busqué en Google. –

+1

¿Cómo se produce esto YYYYMMDDhhmmss? – Rod

25

Todos los otros respons ¡Son muy extraños para alguien que viene de Google y busca "marca de tiempo en marcha"! YYYYMMDDhhmmss no es una "marca de tiempo".

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

+5

Estoy de acuerdo; la pregunta debe titularse como "fecha actual", no como "fecha y hora actual" – developerbmw

+1

Aunque es tarde, creo que .Unix() debe apuntar a https://golang.org/pkg/time/#Time.Unix, cuyo tipo de devolución es int64 . – bornfree

+0

Tiene toda la razón, se actualizó – Bactisme

1

Como un eco a @ respuesta de Bactisme, el camino uno podría ir sobre la recuperación de la fecha y hora actual (en milisegundos, por ejemplo) es:

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

de recursos: https://gobyexample.com/epoch

-3

para responder a la pregunta exacta:

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

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