Полное руководство по форматированию даты в Go (Golang)

В Go (Golang) работа с датами и временем упрощается благодаря встроенному пакету времени. Пакет time предоставляет множество методов форматирования дат в соответствии с определенными шаблонами. В этой статье мы рассмотрим несколько методов форматирования дат в Go, а также приведем примеры кода.

Метод 1: использование функции Format()
Пакет time предоставляет функцию Format(), которая позволяет форматировать значение времени в соответствии с определенной строкой макета. Вот пример:

package main
import (
    "fmt"
    "time"
)
func main() {
    t := time.Now()
    formatted := t.Format("2006-01-02 15:04:05")
    fmt.Println(formatted)
}

Выход:

2024-03-02 10:30:45

Метод 2: использование функции Format() с предопределенными макетами
Пакет time также предоставляет предопределенные константы макета, которые можно использовать с функцией Format(). Например:

package main
import (
    "fmt"
    "time"
)
func main() {
    t := time.Now()
    formatted := t.Format(time.RFC3339)
    fmt.Println(formatted)
}

Выход:

2024-03-02T10:30:45Z

Метод 3: использование функции Format() с пользовательскими макетами
Вы можете создать собственную строку пользовательского макета для форматирования дат в соответствии с вашими требованиями. Вот пример:

package main
import (
    "fmt"
    "time"
)
func main() {
    t := time.Now()
    layout := "Jan 2, 2006 15:04:05"
    formatted := t.Format(layout)
    fmt.Println(formatted)
}

Выход:

Mar 2, 2024 10:30:45

Метод 4: использование пакета strftime
Пакет strftime — это сторонний пакет, который обеспечивает форматирование даты в стиле strftime для Go. Вы можете установить его с помощью go get -u github.com/awoodbeck/strftime. Вот пример:

package main
import (
    "fmt"
    "time"
    "github.com/awoodbeck/strftime"
)
func main() {
    t := time.Now()
    formatted := strftime.Format("%Y-%m-%d %H:%M:%S", t)
    fmt.Println(formatted)
}

Выход:

2024-03-02 10:30:45

Метод 5: использование функции Sprintf() со строкой пользовательского форматирования
Вы также можете использовать функцию Sprintf() из пакета fmt для форматирования дат. Вот пример:

package main
import (
    "fmt"
    "time"
)
func main() {
    t := time.Now()
    formatted := fmt.Sprintf("%02d-%02d-%04d %02d:%02d:%02d",
        t.Day(), t.Month(), t.Year(), t.Hour(), t.Minute(), t.Second())
    fmt.Println(formatted)
}

Выход:

02-03-2024 10:30:45

В этой статье мы рассмотрели несколько методов форматирования дат в Go (Golang). Предпочитаете ли вы использовать встроенную функцию Format(), предопределенные константы макета, пользовательские макеты, сторонние пакеты, такие как strftime, или функцию Sprintf(), у вас есть множество вариантов на выбор. Поэкспериментируйте с этими методами и выберите тот, который лучше всего соответствует вашим требованиям.