| @@ -1,15 +1,18 @@ | |||||
| import 'package:intl/intl.dart'; | import 'package:intl/intl.dart'; | ||||
| var rfc822DateFormat = DateFormat('EEE, dd MMM yyyy HH:mm:ss Z', 'en_US'); | |||||
| const rfc822DatePattern = 'EEE, dd MMM yyyy HH:mm:ss Z'; | |||||
| DateTime parseDateTime(dateString) { | DateTime parseDateTime(dateString) { | ||||
| if (dateString == null) return null; | if (dateString == null) return null; | ||||
| return _parseRfc822DateTime(dateString) ?? _parseIso8601DateTime(dateString); | return _parseRfc822DateTime(dateString) ?? _parseIso8601DateTime(dateString); | ||||
| } | } | ||||
| DateTime _parseRfc822DateTime(dateString) { | |||||
| DateTime _parseRfc822DateTime(String dateString) { | |||||
| try { | try { | ||||
| return rfc822DateFormat.parse(dateString); | |||||
| final length = dateString?.length?.clamp(0, rfc822DatePattern.length); | |||||
| final trimmedPattern = rfc822DatePattern.substring(0, length); //Some feeds use a shortened RFC 822 date, e.g. 'Tue, 04 Aug 2020' | |||||
| final format = DateFormat(trimmedPattern, 'en_US'); | |||||
| return format.parse(dateString); | |||||
| } on FormatException { | } on FormatException { | ||||
| return null; | return null; | ||||
| } | } | ||||