¿Cómo obtengo la marca de tiempo actual en Go?


¿Cuál es la mejor manera de obtener la marca de tiempo actual en Go y convertir a cadena? Necesito tanto la fecha y la hora en eg. YYYYMMDDhhmmss formato.

Author: nmichaels, 2011-05-04

6 answers

Utilice el 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 la hora del Este.) Hay varios formatos de tiempo predefinidos en las constantes definidas en el paquete time.

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

 104
Author: nmichaels,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-24 20:49:43

Todas las otras respuestas son muy falta de liderazgo para alguien que viene de Google y en busca de "marca de tiempo en go"! YYYYMMDDhhmmss no es una "marca de tiempo".

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

 40
Author: Bactisme,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-12 16:29:16

Para la legibilidad, lo mejor es usar las constantes RFC en el paquete de tiempo (me piensa)

import "fmt" 
import "time"

func main() {
    fmt.Println(time.Now().Format(time.RFC850))
}
 39
Author: matthewmcneely,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-12 22:10:06

Utilice la hora .Ahora() y tiempo.Format () funciones (como tiempo.LocalTime() ya no existe a partir de Go 1.0.3)

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

Demo en línea (con fecha fija en el pasado en el patio de recreo, no importa)

 32
Author: Deleplace,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-30 14:08:46

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

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

Recurso: https://gobyexample.com/epoch

 1
Author: Jack Ryan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-22 20:18:16

Para responder a la pregunta exacta:

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

Timestamp, _ = ptypes.TimestampProto(time.Now())
 -6
Author: suran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-09 22:45:27