Метод time.Time.UnixNano

Метод UnixNano преобразует значение времени типа time.Time в целое число типа int64, представляющее количество наносекунд, прошедших с эпохи Unix (1 января 1970 года UTC). Этот метод возвращает высокоточное представление времени, которое часто используется для вычисления промежутков времени, сортировки событий или в качестве уникального идентификатора момента времени.

Синтаксис

gofunc (t time.Time) UnixNano() int64

Пример

Давайте получим текущее время в наносекундах:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  t := time.Now()
  res := t.UnixNano()
  fmt.Println(res)
}

Результат выполнения кода:

go"1700000000000000000"

Пример

Создадим конкретную дату и получим ее значение в наносекундах:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  t := time.Date(2024, 1, 1, 0, 0, 0, 0, time.UTC)
  res := t.UnixNano()
  fmt.Println(res)
}

Результат выполнения кода:

go"1704067200000000000"

Пример

Используем UnixNano для измерения времени выполнения операции:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  start := time.Now().UnixNano()
  
  sum := 0
  for i := 0; i < 1000000; i++ {
    sum += i
  }
  
  end := time.Now().UnixNano()
  duration := end - start
  fmt.Println(duration)
}

Результат выполнения кода:

go"1500000"

Обратите внимание, что значение может отличаться в зависимости от производительности системы.

Смотрите также

  • метод time.Time.Unix,
    который возвращает количество секунд с эпохи Unix
  • метод time.Time.UnixMilli,
    который возвращает количество миллисекунд с эпохи Unix
  • метод time.Time.UnixMicro,
    который возвращает количество микросекунд с эпохи Unix
  • метод time.Time.Sub,
    который вычисляет разницу между двумя моментами времени