2026-03-26 01:56:29 +07:00

54 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package date_parser
import (
"fmt"
"strconv"
"strings"
"time"
)
var (
ruMonths = map[string]time.Month{
"января": time.January,
"февраля": time.February,
"марта": time.March,
"апреля": time.April,
"мая": time.May,
"июня": time.June,
"июля": time.July,
"августа": time.August,
"сентября": time.September,
"октября": time.October,
"ноября": time.November,
"декабря": time.December,
}
)
type parser struct{}
func NewDateParser() IDateParser {
return &parser{}
}
func (p *parser) Parse(date string) (time.Time, error) {
parts := strings.Fields(date)
if len(parts) < 2 {
return time.Time{}, fmt.Errorf("Неверный формат даты, ожидалось 'День Месяц', получено: '%s'", date)
}
day, err := strconv.Atoi(parts[0])
if err != nil {
return time.Time{}, fmt.Errorf("Не удалось получить день: %v", err)
}
monthStr := strings.ToLower(parts[1])
month, ok := ruMonths[monthStr]
if !ok {
return time.Time{}, fmt.Errorf("Неизвестный месяц: %s", monthStr)
}
year := time.Now().Year()
return time.Date(year, month, day, 0, 0, 0, 0, time.Local), nil
}