From 6c010d23c76fb473a6d7a599e378e22f2640eef6 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Wed, 23 Jul 2025 17:00:29 +0300 Subject: [PATCH] Extract parse date func --- main.go | 43 ++++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/main.go b/main.go index fa0d927..f4fe689 100644 --- a/main.go +++ b/main.go @@ -206,13 +206,10 @@ func extractDateFromEXIF(path string) *time.Time { continue } - // Парсим дату в формате EXIF: "2006:01:02 15:04:05" - date, err := time.Parse("2006:01:02 15:04:05", dateStr) - if err != nil { - continue + date := parseDateTime(dateStr) + if date != nil { + return date } - - return &date } return nil @@ -253,19 +250,9 @@ func extractDateFromExifTool(path string) *time.Time { continue } - // Пытаемся парсить различные форматы дат - formats := []string{ - "2006:01:02 15:04:05", - "2006-01-02 15:04:05", - "2006:01:02 15:04:05-07:00", - "2006-01-02T15:04:05Z", - "2006-01-02T15:04:05-07:00", - } - - for _, format := range formats { - if date, err := time.Parse(format, dateStr); err == nil { - return &date - } + date := parseDateTime(dateStr) + if date != nil { + return date } } } @@ -344,6 +331,24 @@ func calculateFileHash(path string) (string, error) { return hash, nil } +func parseDateTime(dateStr string) *time.Time { + formats := []string{ + "2006:01:02 15:04:05", + "2006:01:02 15:04:05-07:00", + "2006-01-02 15:04:05", + "2006-01-02T15:04:05Z", + "2006-01-02T15:04:05-07:00", + } + + for _, format := range formats { + if date, err := time.Parse(format, dateStr); err == nil { + return &date + } + } + + return nil +} + func moveFile(fileInfo *FileInfo, destPath string) error { // Создаем директорию назначения, если она не существует destDir := filepath.Dir(destPath)