diff --git a/lib/src/minio_models.dart b/lib/src/minio_models.dart index 3b9cc581d7881697616207429e22a7d5230c4770..801ca1d9a2181dd4e357d1c1435c9322c7663a30 100644 --- a/lib/src/minio_models.dart +++ b/lib/src/minio_models.dart @@ -1,5 +1,6 @@ import 'package:minio/models.dart'; import 'package:minio/src/minio_errors.dart'; +import 'package:minio/src/utils.dart'; import 'package:xml/xml.dart'; import '../models.dart'; @@ -91,11 +92,11 @@ class CopyConditions { String? matchETagExcept; void setModified(DateTime date) { - modified = date.toUtc().toIso8601String(); + modified = toRfc7231Time(date.toUtc()); } void setUnmodified(DateTime date) { - unmodified = date.toUtc().toIso8601String(); + unmodified = toRfc7231Time(date.toUtc()); } void setMatchETag(String etag) { diff --git a/lib/src/utils.dart b/lib/src/utils.dart index 8ae8e007fd56362331c01a58e4dd4e391b1d757e..67fdde0a034b4aa6020ac22491cf68a833728dee 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -91,8 +91,15 @@ String trimDoubleQuote(String str) { } DateTime parseRfc7231Time(String time) { - final format = DateFormat('EEE, dd MMM yyyy hh:mm:ss zzz'); - return format.parse(time); + final format = DateFormat('EEE, dd MMM yyyy HH:mm:ss'); + final isUtc = time.endsWith('GMT'); + return format.parse(time, isUtc); +} + +String toRfc7231Time(DateTime time) { + final format = DateFormat('EEE, dd MMM yyyy HH:mm:ss'); + final result = format.format(time); + return time.isUtc ? result + ' GMT' : result; } List<List<T>> groupList<T>(List<T> list, int maxMembers) {