Константа time.RFC3339Nano

Константа time.RFC3339Nano представляет строковый формат представления времени, соответствующий стандарту RFC3339 с дополнительной поддержкой наносекунд. Эта константа имеет тип string и часто используется при форматировании и парсинге временных меток в формате ISO 8601.

Константа содержит значение "2006-01-02T15:04:05.999999999Z07:00", где наносекунды могут отображаться с точностью до 9 знаков. При форматировании времени с помощью этой константы, наносекунды будут включены в результирующую строку только в том случае, если они не равны нулю.

Синтаксис

goconst RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"

Пример

Давайте отформатируем текущее время с использованием константы time.RFC3339Nano:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  now := time.Now()
  res := now.Format(time.RFC3339Nano)
  fmt.Println(res)
}

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

go"2026-09-04T15:04:05.123456789Z"

Пример

Давайте сравним форматирование с константами time.RFC3339 и time.RFC3339Nano для одного времени:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  t := time.Date(2026, time.September, 4, 15, 4, 5, 123456789, time.UTC)
  
  rfc3339 := t.Format(time.RFC3339)
  rfc3339nano := t.Format(time.RFC3339Nano)
  
  fmt.Println(rfc3339)
  fmt.Println(rfc3339nano)
}

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

go"2026-09-04T15:04:05Z"
"2026-09-04T15:04:05.123456789Z"

Пример

Давайте разберем парсинг строки времени в формате time.RFC3339Nano:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  timeStr := "2026-09-04T15:04:05.987654321Z"
  t, err := time.Parse(time.RFC3339Nano, timeStr)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  fmt.Println(t.UnixNano())
}

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

go"1791810245987654321"

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

  • константу time.RFC3339,
    которая представляет формат RFC3339 без наносекунд
  • функцию time.Time.Format,
    которая форматирует время согласно заданному шаблону
  • функцию time.Parse,
    которая преобразует строку времени в объект time.Time
  • константу time.Layout,
    которая представляет стандартный шаблон форматирования времени