Функция time.Parse

Функция time.Parse преобразует строковое представление даты и времени в значение типа time.Time. Первый параметр функции — это строка формата (шаблон), по которому будет выполняться парсинг. Второй параметр — строка, содержащая дату и время для преобразования. Функция возвращает объект time.Time и ошибку, если парсинг не удался.

Синтаксис

gotime.Parse(layout, value string) (time.Time, error)

Пример

Разберем базовый пример парсинга даты в формате "2006-01-02":

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  layout := "2006-01-02"
  str := "2023-12-25"
  res, err := time.Parse(layout, str)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

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

go"2023-12-25 00:00:00 +0000 UTC"

Пример

Теперь рассмотрим парсинг строки с указанием времени в формате "2006-01-02 15:04:05":

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  layout := "2006-01-02 15:04:05"
  str := "2023-12-25 14:30:00"
  res, err := time.Parse(layout, str)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

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

go"2023-12-25 14:30:00 +0000 UTC"

Пример

Парсинг строки с использованием предопределенного формата time.RFC3339:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  layout := time.RFC3339
  str := "2024-01-15T10:30:00Z"
  res, err := time.Parse(layout, str)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

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

go"2024-01-15 10:30:00 +0000 UTC"

Пример

Обработка ошибки при неверном формате строки:

gopackage main

import (
  "fmt"
  "time"
)

func main() {
  layout := "2006-01-02"
  str := "25-12-2023"
  res, err := time.Parse(layout, str)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(res)
}

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

go"parsing time \"25-12-2023\" as \"2006-01-02\": cannot parse \"25-12-2023\" as \"2006\""

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

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