calculateTimeBetweenTwoDate method

String calculateTimeBetweenTwoDate(
  1. DateTime dateTimeFirst,
  2. DateTime dateTimeSecond
)

Calculates the time difference between two dates and formats it as a string.

This method calculates the difference between dateTimeFirst and dateTimeSecond, and formats the result as a string in the format "Xd Xh Xm Xs Xms", where X represents the number of days, hours, minutes, seconds, and milliseconds, respectively.

Returns a String representing the formatted time difference.

Implementation

String calculateTimeBetweenTwoDate(
  DateTime dateTimeFirst,
  DateTime dateTimeSecond,
) {
  const int secondInDay = 86400;
  const int secondInHour = 3600;
  const int secondInMinute = 60;
  final String defaultStringResult = '0s';
  final Duration difference = dateTimeSecond.difference(dateTimeFirst);
  int differenceInSecond = difference.inSeconds;
  int days = (differenceInSecond / secondInDay).truncate();
  differenceInSecond -= days * secondInDay;
  int hours = (differenceInSecond / secondInHour).truncate();
  differenceInSecond -= hours * secondInHour;
  int minutes = (differenceInSecond / secondInMinute).truncate();
  differenceInSecond -= minutes * secondInMinute;
  int seconds = differenceInSecond;
  final int milliseconds = difference.inMilliseconds.remainder(1000);
  final String daysString = days > 0 ? '${days}d ' : '';
  final String hoursString = hours > 0 || daysString.isNotEmpty ? '${hours}h ' : '';
  final String minutesString =
      minutes > 0 || hoursString.isNotEmpty ? '${minutes}m ' : '';
  final String secondsString =
      seconds > 0 || minutesString.isNotEmpty ? '${seconds}s ' : '';
  final String millisecondsString =
      milliseconds > 0 || secondsString.isNotEmpty ? '${milliseconds}ms' : '';
  final String result = daysString +
      hoursString +
      minutesString +
      secondsString +
      millisecondsString;
  if (result.isEmpty) {
    return defaultStringResult;
  }
  return result;
}