docs: public static String buildTimeDifference(final Calendar pStartCalendar, final Calendar pEndCalendar) {
  
      if (pStartCalendar == null) {
        return CALENDAR_IS_NULL_ERROR_MESSAGE;
      }
      if (pEndCalendar == null) {
        return CALENDAR_IS_NULL_ERROR_MESSAGE;
      }
      if (pEndCalendar.before(pStartCalendar)) {
        return CALENDAR_CAUSATION_ERROR_MESSAGE;
      }
      int dateDiff        = pEndCalendar.get(Calendar.DATE) - pStartCalendar.get(Calendar.DATE);
      int hourDiff        = pEndCalendar.get(Calendar.HOUR_OF_DAY) - pStartCalendar.get(Calendar.HOUR_OF_DAY);
      int minuteDiff      = pEndCalendar.get(Calendar.MINUTE) - pStartCalendar.get(Calendar.MINUTE);
      int secondDiff      = pEndCalendar.get(Calendar.SECOND) - pStartCalendar.get(Calendar.SECOND);
      int milliSecondDiff = pEndCalendar.get(Calendar.MILLISECOND) - pStartCalendar.get(Calendar.MILLISECOND);
  
      if (milliSecondDiff < 0) {
        secondDiff--;
        milliSecondDiff += 1000;
      }
      if (secondDiff < 0) {
        minuteDiff--;
        secondDiff += 60;
      }
      if (minuteDiff < 0) {
        hourDiff--;
        minuteDiff += 60;
      }
      while (dateDiff > 0) {
        dateDiff--;
        hourDiff += 24;
      }
  
      // Time difference presentation format
      StringBuilder buffer = new StringBuilder();
  
      if ((hourDiff == 0) && (minuteDiff == 0) && (secondDiff == 0)) {
        buffer.append(milliSecondDiff);
        buffer.append("ms");
      } else if ((hourDiff == 0) && (minuteDiff == 0)) {
        buffer.append(secondDiff);
        buffer.append("s ");
        buffer.append(milliSecondDiff);
        buffer.append("ms");
      } else if (hourDiff == 0) {
        buffer.append(minuteDiff);
        buffer.append("m ");
        buffer.append(secondDiff);
        buffer.append(",");
        buffer.append(milliSecondDiff);
        buffer.append("s");
      } else {
        buffer.append(hourDiff);
        buffer.append("h ");
        buffer.append(minuteDiff);
        buffer.append("m ");
        buffer.append(secondDiff);
        buffer.append(",");
        buffer.append(milliSecondDiff);
        buffer.append("s");
      }
      return buffer.toString();
    }