|
- import 'package:intl/intl.dart';
-
- 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(String dateString) {
- try {
- 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;
- }
- }
-
- DateTime _parseIso8601DateTime(dateString) {
- try {
- return DateTime.parse(dateString);
- } on FormatException {
- return null;
- }
- }
|