Estoy tratando de analizar un campo Date signUpDate del objeto MongoDb User recibido a través de una solicitud http en un Flutter DateTime signUpDate pero siempre falla. En mi Esquema de usuario tengo signUpDate: { type: Date, required: false, default: Date.now }, . En mi factory User.fromMongoDB(Map<String, dynamic> map) estoy usando signUpDate: DateTime.parse(map['signUpDate']) . Al imprimir la respuesta http signUpDate es "signUpDate":"2021-12-15T11:10:01.521Z" . ¿Es solo el formato que regresa de mongo no analizable por el analizador DateTime o lo estoy analizando incorrectamente? Muchas gracias.
Aquí el código para analizar la cadena ISO8601 a la hora de la fecha simplemente pasando el formato que necesita.
import 'package:intl/intl.dart'; void main() { var data = "2021-12-15T11:10:01.521Z"; DateTime dateTime = getFormattedDateFromFormattedString( value: data, currentFormat: "yyyy-MM-ddTHH:mm:ssZ", desiredFormat: "yyyy-MM-dd HH:mm:ss"); print(dateTime); //2021-12-15 11:10:01.000 } getFormattedDateFromFormattedString( {required value, required String currentFormat, required String desiredFormat, isUtc = false}) { DateTime? dateTime = DateTime.now(); if (value != null || value.isNotEmpty) { try { dateTime = DateFormat(currentFormat).parse(value, isUtc).toLocal(); } catch (e) { print("$e"); } } return dateTime; }