|
|
|
@@ -1,15 +1,18 @@ |
|
|
|
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) { |
|
|
|
if (dateString == null) return null; |
|
|
|
return _parseRfc822DateTime(dateString) ?? _parseIso8601DateTime(dateString); |
|
|
|
} |
|
|
|
|
|
|
|
DateTime _parseRfc822DateTime(dateString) { |
|
|
|
DateTime _parseRfc822DateTime(String dateString) { |
|
|
|
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 { |
|
|
|
return null; |
|
|
|
} |
|
|
|
|