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;
  String defaultStringResult = '0s';
  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;
  int milliseconds = difference.inMilliseconds.remainder(1000);
  String daysString = days > 0 ? '${days}d ' : '';
  String hoursString = hours > 0 || daysString.isNotEmpty ? '${hours}h ' : '';
  String minutesString =
      minutes > 0 || hoursString.isNotEmpty ? '${minutes}m ' : '';
  String secondsString =
      seconds > 0 || minutesString.isNotEmpty ? '${seconds}s ' : '';
  String millisecondsString =
      milliseconds > 0 || secondsString.isNotEmpty ? '${milliseconds}ms' : '';
  String result = daysString +
      hoursString +
      minutesString +
      secondsString +
      millisecondsString;
  if (result.isEmpty) {
    return defaultStringResult;
  }
  return result;
}