calculateTimeBetweenTwoDate method
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;
}