Как получить текущую метку времени в Go?

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

Ответ 1

Используйте time.Now() и time.Format().

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

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

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

Ответ 2

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

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

Онлайн-демонстрация (с датой, зафиксированной в прошлом на игровой площадке, неважно)

Ответ 3

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

import "fmt" 
import "time"

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

Ответ 4

Все остальные ответы очень скудны для кого-то из Google и ищут "timestamp in go"! YYYYMMDDhhmmss не является "меткой времени".

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

Ответ 5

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

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

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

Ответ 6

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

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

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