Go за Прикладом: Epoch

Нерідко потрібно взнати час що пройшов з моменту початку часу Unix. Цей час можна представити в секундах, мілісекундах, або наносекундах - і ось як ми це робимо в Go.

package main
import (
    "fmt"
    "time"
)
func main() {

Для отримання секунд або наносекунд з моменту початку Unix скористаємось методом Unix або UnixNano об’єкта time.Now відповідно.

    now := time.Now()
    secs := now.Unix()
    nanos := now.UnixNano()
    fmt.Println(now)

Зауважте - не існує UnixMillis, а отже, щоб отримати час в мілісекундах - необхідно поділити наносекунди на 100 000 (кількість наносекунд в мілісекунді).

    millis := nanos / 1000000
    fmt.Println(secs)
    fmt.Println(millis)
    fmt.Println(nanos)

Дозволяється конвертувати цілочисельні секунди або наносекунди у відповідний time.

    fmt.Println(time.Unix(secs, 0))
    fmt.Println(time.Unix(0, nanos))
}
$ go run epoch.go
2012-10-31 16:13:58.292387 +0000 UTC
1351700038
1351700038292
1351700038292387000
2012-10-31 16:13:58 +0000 UTC
2012-10-31 16:13:58.292387 +0000 UTC

Далі ми роглянемо ще одину задачу на тему часу: його розбір та форматування.

Наступний приклад: Форматування та Розбір Часу.