Potřeboval jsem zformátovat čas, který ale není datumem. Něco jako jak dlouho někdo běžel a podobně. Po krátkém hledání jsem ale nic nenašel jak to řešit. Neměl jsem moc času a tu prkotinu si naprogramoval, ale zajímalo by mě jestli to nějak jde. Konkrétně jsem potřeboval asi takový výstup "180 dní 08:32:05". SimpleDateFormat mi moc nepomohl.
no zveřejním i to co jsem naprogramoval, to kdyby jste to také řešili.
Kód:
package xxx;
import java.text.DecimalFormat;
public class TimeFormater {
private final static long DAY = 24 * 3600 * 1000L;
private final static long HOUR = 3600 * 1000L;
private final static long MINUTE = 60 * 1000L;
private final static long SECOND = 1000L;
// we want two digits for hours,minutes... HH:mm:ss
private final static DecimalFormat TWO_DIGITS = new DecimalFormat("00");
public static String format(long miliTime) {
long time = miliTime;
String output = "";
// it time is bigger than one day
if (time > DAY) {
long days = miliTime / DAY; // count days
time %= DAY; // save the rest (delete days from time)
output += "" + days; // add number of days
output += (days == 1) ? " day " : " days "; // add word "day" or "days"
}
// find how many hour time contains and format it to two digits
output += TWO_DIGITS.format(time / HOUR) + ":";
time %= HOUR;
// minutes
output += TWO_DIGITS.format(time / MINUTE) + ":";
time %= MINUTE;
// seconds
output += TWO_DIGITS.format(time / SECOND);
return output;
}
}