Разбор даты из строки

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 простоты и ясности.