Существует очень простой и легкий способ сделать это, требующий очень мало арифметических знаний о дате / времени.
Просто сравните оба значения микросекунды DateTimesSinceEpoch:
Duration compare(DateTime x, DateTime y) {
return Duration(microseconds: (x.microsecondsSinceEpoch - y.microsecondsSinceEpoch).abs())
}
DateTime x = DateTime.now()
DateTime y = DateTime(1994, 11, 1, 6, 55, 34);
Duration diff = compare(x,y);
print(diff.inDays);
print(diff.inHours);
print(diff.inMinutes);
print(diff.inSeconds);
Кодвыше работает, и работает намного эффективнее, чем проведение проверок високосных лет и отклонений, основанных на времени, аномалий.