compareDate static method

bool compareDate(
  1. dynamic date1,
  2. dynamic date2, [
  3. CompareType compareType = CompareType.equal
])

安全地比较两个日期,允许传入2个任意类型的数据,它们都会安全地转化为DateTime类型进行比较

Implementation

static bool compareDate(
  dynamic date1,
  dynamic date2, [
  CompareType compareType = CompareType.equal,
]) {
  late int result; // 比较结果
  int nullValue1 = isEmpty(date1) ? 0 : 1;
  int nullValue2 = isEmpty(date2) ? 0 : 1;

  // 如果有一个值为空,则直接获取比较结果
  if (nullValue1 == 0 || nullValue2 == 0) {
    result = nullValue1 - nullValue2;
  } else {
    DateTime? dateTime1;
    DateTime? dateTime2;
    if (date1 is String) {
      dateTime1 = DateTime.tryParse(date1);
    } else if (date1 is DateTime) {
      dateTime1 = date1;
    } else {
      throw Exception('传入的date1类型错误');
    }
    if (date2 is String) {
      dateTime2 = DateTime.tryParse(date2);
    } else if (date2 is DateTime) {
      dateTime2 = date2;
    } else {
      throw Exception('传入的date2类型错误');
    }
    if (dateTime1 != null && dateTime2 != null) {
      result = dateTime1.compareTo(dateTime2);
    } else {
      result = (dateTime1 == null ? 0 : 1) - (dateTime2 == null ? 0 : 1);
    }
  }
  return _compareResult(compareType, result);
}