Как мне получить текущую метку времени в Go? - PullRequest
108 голосов
/ 04 мая 2011

Какой лучший способ получить текущую временную метку в Go и преобразовать в строку? Мне нужна дата и время, например. ГГГГММДДччммсс формат.

Ответы [ 6 ]

123 голосов
/ 04 мая 2011

Используйте функцию time.Now() и метод time.Format().

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

распечатывает 20110504111515, или, по крайней мере, это было несколько минут назад. (Я работаю по восточному летнему времени.) В константах, определенных в пакете времени, есть несколько предопределенных форматов времени.

Вы можете использовать time.Now().UTC(), если вы предпочитаете использовать UTC, а не местный часовой пояс.

57 голосов
/ 29 июня 2016

Все остальные ответы очень скучны, если кто-то из Google ищет "timestamp in go"!ГГГГММДЧчммсс не является «отметкой времени».

Чтобы получить «отметку времени» даты в движении (количество секунд с января 1970 года), правильная функция - .Unix () , иэто действительно возвращает целое число

52 голосов
/ 13 сентября 2013

Для удобства чтения лучше всего использовать константы RFC во временном пакете (мне кажется)

import "fmt" 
import "time"

func main() {
    fmt.Println(time.Now().Format(time.RFC850))
}
31 голосов
/ 30 декабря 2012

Используйте функции time.Now () и time.Format () (так как time.LocalTime () больше не существует с Go 1.0.3)

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

Демо онлайн (с датой, установленной в прошлом на детской площадке, неважно)

1 голос
/ 22 августа 2017

Как ответ на ответ @ Bactisme, способ получения текущей метки времени (например, в миллисекундах):

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

Ресурс: https://gobyexample.com/epoch

0 голосов
/ 10 ноября 2017

Чтобы ответить на точный вопрос:

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

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