Flutter 中从 MongoDb 解析日期总是失败

Vin*_*nzo 1 datetime mongodb flutter

我试图将Date signUpDate通过 http 请求接收到的 MongoDb User 对象中的字段解析为 Flutter DateTime signUpDate,但它总是失败。在我的用户架构中,我有signUpDate: { type: Date, required: false, default: Date.now },. 在我的 Flutterfactory User.fromMongoDB(Map<String, dynamic> map)助手中,我使用signUpDate: DateTime.parse(map['signUpDate']). 当打印http响应signUpDate时"signUpDate":"2021-12-15T11:10:01.521Z"。这只是从 mongo 返回的格式无法被 DateTime 解析器解析还是我错误地解析了它?非常感谢。

Jah*_*lam 5

这里是将 ISO8601 字符串解析为日期时间的代码,只是传递您需要的格式。

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;
}
Run Code Online (Sandbox Code Playgroud)