Improvement: better duration display

This commit is contained in:
Laurent Clouet
2015-01-28 00:46:08 +00:00
parent d17c5c830f
commit 8f88e0e3fc
2 changed files with 27 additions and 6 deletions

View File

@@ -37,6 +37,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.TimeZone;
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
@@ -910,16 +911,12 @@ public class Client {
try { try {
DateFormat date_parse_minute = new SimpleDateFormat("m:s"); DateFormat date_parse_minute = new SimpleDateFormat("m:s");
DateFormat date_parse_hour = new SimpleDateFormat("h:m:s"); DateFormat date_parse_hour = new SimpleDateFormat("h:m:s");
SimpleDateFormat date_output_minute = new SimpleDateFormat("mm'min'ss");
SimpleDateFormat date_output_hour = new SimpleDateFormat("HH'h'mm'min'ss");
DateFormat date_parse = date_parse_minute; DateFormat date_parse = date_parse_minute;
DateFormat date_output = date_output_minute;
if (remaining_time.split(":").length > 2) { if (remaining_time.split(":").length > 2) {
date_parse = date_parse_hour; date_parse = date_parse_hour;
date_output = date_output_hour;
} }
Date d1 = date_parse.parse(remaining_time); date_parse.setTimeZone(TimeZone.getTimeZone("GMT"));
this.gui.status(String.format("Rendering (remaining %s)", date_output.format(d1))); this.gui.status(String.format("Rendering (remaining %s)", Utils.humanDuration(date_parse.parse(remaining_time))));
} }
catch (ParseException err) { catch (ParseException err) {
this.log.error("Client::updateRenderingStatus ParseException " + err); this.log.error("Client::updateRenderingStatus ParseException " + err);

View File

@@ -28,6 +28,9 @@ import java.io.InputStream;
import java.math.BigInteger; import java.math.BigInteger;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException; import java.security.NoSuchAlgorithmException;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
@@ -232,4 +235,25 @@ public class Utils {
} }
return Math.round(Double.parseDouble(m.group(1)) * scale); return Math.round(Double.parseDouble(m.group(1)) * scale);
} }
public static String humanDuration(Date date) {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.setTime(date);
int hours = (calendar.get(Calendar.DAY_OF_MONTH) - 1) * 24 + calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);
String output = "";
if (hours > 0) {
output += hours + "h";
}
if (minutes > 0) {
output += minutes + "min";
}
if (seconds > 0) {
output += seconds + "s";
}
return output;
}
} }