001package org.hl7.fhir.utilities;
002
003import java.util.concurrent.TimeUnit;
004
005public class DurationUtil {
006  public static String presentDuration(long duration) {
007    duration = duration / 1000000;
008    String res = "";    // ;
009    long days       = TimeUnit.MILLISECONDS.toDays(duration);
010    long hours      = TimeUnit.MILLISECONDS.toHours(duration) -
011        TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(duration));
012    long minutes    = TimeUnit.MILLISECONDS.toMinutes(duration) -
013        TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(duration));
014    long seconds    = TimeUnit.MILLISECONDS.toSeconds(duration) -
015        TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(duration));
016    long millis     = TimeUnit.MILLISECONDS.toMillis(duration) -
017        TimeUnit.SECONDS.toMillis(TimeUnit.MILLISECONDS.toSeconds(duration));
018
019    if (days > 0)
020      res = String.format("%dd %02d:%02d:%02d.%03d", days, hours, minutes, seconds, millis);
021    else if (hours > 0)
022      res = String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, millis);
023    else //
024      res = String.format("%02d:%02d.%03d", minutes, seconds, millis);
025//    else
026//      res = String.format("%02d.%04d", seconds, millis);
027    return res;
028  }
029}