compareDate static method
安全地比较两个日期,允许传入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);
}