Получение метки времени Unix на языке Go (текущее время в секундах с начала эпохи) - PullRequest
67 голосов
/ 02 марта 2012

У меня есть код, написанный на Go, который я пытаюсь обновить для работы с последними еженедельными сборками.(Последний раз был построен под R60).Теперь все работает, кроме следующего бита:

 if t, _, err := os.Time(); err == nil {
   port[5] = int32(t)
 }

Любой совет, как обновить это для работы с текущей реализацией Go?

Ответы [ 3 ]

138 голосов
/ 03 марта 2012
import "time"
...
port[5] = int32(time.Now().Unix())
17 голосов
/ 13 июля 2015

Если вы хотите, чтобы оно было string, просто конвертируйте его через strconv:

package main

import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    timestamp := strconv.FormatInt(time.Now().UTC().UnixNano(), 10)
    fmt.Println(timestamp) // prints: 1436773875771421417
}
11 голосов
/ 03 марта 2012

Еще один совет.time.Now().UnixNano() (godoc) даст вам наносекунды с эпохи.Это не строго Unix-время, но оно дает вам точность менее секунды, используя ту же эпоху, что может быть удобно.

Редактировать: Изменено в соответствии с текущим golang api

...