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)