diff --git a/parse.go b/parse.go index 7698cb6..401e712 100644 --- a/parse.go +++ b/parse.go @@ -639,7 +639,7 @@ func parseEventRRule(eventData string) string { func parseExcludedDates(eventData string, convertDatesToUTC bool) ([]time.Time, error) { var dates []time.Time - excl := eventExDateRegex.FindAllStringSubmatch(eventData, -1) + excl := eventExDateRegex.FindAllStringSubmatch(strings.Replace(eventData, "\n", "", -1), -1) for _, e := range excl { if len(e) < 3 { @@ -651,23 +651,28 @@ func parseExcludedDates(eventData string, convertDatesToUTC bool) ([]time.Time, return nil, err } - dt := strings.TrimSpace(e[2]) - if !strings.Contains(dt, "Z") { - dt += "Z" - } + dts := strings.Split(e[2], ",") - t, err := time.Parse(icsFormat, dt) - if err != nil { - return nil, err - } + for _, dt := range dts { + dt = strings.TrimSpace(dt) - t = time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), tz) + if !strings.Contains(dt, "Z") { + dt += "Z" + } - if convertDatesToUTC { - t = t.UTC() - } + t, err := time.Parse(icsFormat, dt) + if err != nil { + return nil, err + } + + t = time.Date(t.Year(), t.Month(), t.Day(), t.Hour(), t.Minute(), t.Second(), t.Nanosecond(), tz) - dates = append(dates) + if convertDatesToUTC { + t = t.UTC() + } + + dates = append(dates, t) + } } return dates, nil