diff options
author | Frédéric Guillot <fred@miniflux.net> | 2018-04-09 21:27:15 -0700 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2018-04-09 21:27:15 -0700 |
commit | 02ba735ba92e47b6f1136d051dfe6923fd742be1 (patch) | |
tree | bd1bbe00f44b55586fe40913ce490e7e26d31249 /reader/date/parser.go | |
parent | 20f874399db84032ebfba1769267470a4494d554 (diff) |
Handle some non-english date formats
Diffstat (limited to 'reader/date/parser.go')
-rw-r--r-- | reader/date/parser.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/reader/date/parser.go b/reader/date/parser.go index 063bf99..d215775 100644 --- a/reader/date/parser.go +++ b/reader/date/parser.go @@ -71,6 +71,8 @@ var dateFormats = []string{ "Mon, 2 Jan 2006 15:04:05 -0700", "Mon, 2 Jan 2006 15:04:05", "Mon, 2 Jan 2006 15:04", + "Mon, 02 Jan 2006, 15:04", + "Mon, 2 Jan 2006, 15:04", "Mon,2 Jan 2006", "Mon, 2 Jan 2006", "Mon, 2 Jan 15:04:05 MST", @@ -192,6 +194,7 @@ var dateFormats = []string{ // Parse parses a given date string using a large // list of commonly found feed date formats. func Parse(ds string) (t time.Time, err error) { + ds = replaceNonEnglishWords(ds) d := strings.TrimSpace(ds) if d == "" { return t, errors.New("date parser: empty value") @@ -211,3 +214,32 @@ func Parse(ds string) (t time.Time, err error) { err = fmt.Errorf(`date parser: failed to parse date "%s"`, ds) return } + +// Replace German and French dates to English. +func replaceNonEnglishWords(ds string) string { + r := strings.NewReplacer( + "Mo,", "Mon,", + "Di,", "Tue,", + "Mi,", "Wed,", + "Do,", "Thu,", + "Fr,", "Fri,", + "Sa,", "Sat,", + "So,", "Sun,", + "Mär ", "Mar ", + "Mai ", "May ", + "Okt ", "Oct ", + "Dez ", "Dec ", + "lun,", "Mon,", + "mar,", "Tue,", + "mer,", "Wed,", + "jeu,", "Thu,", + "ven,", "Fri,", + "sam,", "Sat,", + "dim,", "Sun,", + "avr ", "Apr ", + "mai ", "May ", + "jui ", "Jun ", + ) + + return r.Replace(ds) +} |