Go:
Разбор даты из строки
Как это сделать:
Go предоставляет мощную поддержку для разбора дат и времени через пакет time
. Ключ к пониманию - формат базовой даты Go: Mon Jan 2 15:04:05 MST 2006
, который вы используете, чтобы сказать Go, как интерпретировать входящую строку. Вот быстрый пример, чтобы начать:
package main
import (
"fmt"
"time"
)
func main() {
// Пример строки с датой
dateStr := "2023-04-12 14:45:00"
// Определите макет/формат входящей строки с датой
// Этот макет говорит Go ожидать год, затем месяц,
// затем день, час, минуту и, наконец, секунду
layout := "2006-01-02 15:04:05"
// Разбор строки даты согласно макету
parsedDate, err := time.Parse(layout, dateStr)
if err != nil {
fmt.Println("Ошибка при разборе даты:", err)
return
}
// Вывод разобранной даты
fmt.Println("Разобранная Дата:", parsedDate)
}
Когда вы запустите этот код, получите:
Разобранная Дата: 2023-04-12 14:45:00 +0000 UTC
Обратите внимание, как строка layout
использует значения базовой даты для указания формата входной строки. Настройте layout
, чтобы он соответствовал формату ваших входных дат.
Глубокое погружение
Дизайн разбора дат и времени в Go уникален, используя специфическую базовую дату (Mon Jan 2 15:04:05 MST 2006
). Этот подход, в отличие от использования более конвенциональных спецификаторов формата (например, YYYY
для года), был выбран за его читабельность и удобство использования, применяя формат на основе примеров.
Хотя это может сначала показаться необычным программистам, привыкшим к другим языкам, многие находят его более интуитивным после короткого периода адаптации. Для приложений, требующих более сложной манипуляции с датами или форматов, не поддерживаемых напрямую пакетом time
Go, сторонние библиотеки, такие как github.com/jinzhu/now
, могут предложить дополнительную функциональность. Однако для большинства стандартных приложений встроенные возможности Go являются надежными, производительными и идиоматичными, воплощая философию Go простоты и ясности.