From 04756f74275feb47b71fdbf2de8fefdf005fd014 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 12 Aug 2015 16:53:52 +0200 Subject: Fix time parsing --- rss.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/rss.go b/rss.go index c9413b2..a6f2de8 100644 --- a/rss.go +++ b/rss.go @@ -3,6 +3,7 @@ package rss import ( "encoding/xml" + "errors" "net/http" "strings" "time" @@ -41,22 +42,23 @@ type Item struct { PubDate Time `xml:"pubDate"` } -const altFormat = `Mon, 2 Jan 2006 15:04:05 -0700` +var formats = []string{ + `Mon, _2 Jan 2006 15:04:05 -0700`, // like RFC1123Z + `Mon, _2 Jan 2006 15:04:05 MST`, // like RFC1123 +} // UnmarshalXML decodes Time format func (t *Time) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { var v string d.DecodeElement(&v, &start) v = strings.TrimSpace(v) - parse, err := time.Parse(time.RFC1123, v) - if err != nil { - parse, err = time.Parse(altFormat, v) - if err != nil { - return err + for _, f := range formats { + if parse, err := time.Parse(f, v); err == nil { + *t = Time{parse} + return nil } } - *t = Time{parse} - return nil + return errors.New(v) } // Fetch and parse RSS from given URL -- cgit v1.2.3