From 8f88e0e3fc872fd57a1f22a3017a2e2c76f71f6a Mon Sep 17 00:00:00 2001 From: Laurent Clouet Date: Wed, 28 Jan 2015 00:46:08 +0000 Subject: [PATCH] Improvement: better duration display --- src/com/sheepit/client/Client.java | 9 +++------ src/com/sheepit/client/Utils.java | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/com/sheepit/client/Client.java b/src/com/sheepit/client/Client.java index dc1bc31..c002711 100644 --- a/src/com/sheepit/client/Client.java +++ b/src/com/sheepit/client/Client.java @@ -37,6 +37,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.TimeZone; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; @@ -910,16 +911,12 @@ public class Client { try { DateFormat date_parse_minute = new SimpleDateFormat("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_output = date_output_minute; if (remaining_time.split(":").length > 2) { date_parse = date_parse_hour; - date_output = date_output_hour; } - Date d1 = date_parse.parse(remaining_time); - this.gui.status(String.format("Rendering (remaining %s)", date_output.format(d1))); + date_parse.setTimeZone(TimeZone.getTimeZone("GMT")); + this.gui.status(String.format("Rendering (remaining %s)", Utils.humanDuration(date_parse.parse(remaining_time)))); } catch (ParseException err) { this.log.error("Client::updateRenderingStatus ParseException " + err); diff --git a/src/com/sheepit/client/Utils.java b/src/com/sheepit/client/Utils.java index 70ce893..de8c5a8 100644 --- a/src/com/sheepit/client/Utils.java +++ b/src/com/sheepit/client/Utils.java @@ -28,6 +28,9 @@ import java.io.InputStream; import java.math.BigInteger; import java.security.MessageDigest; 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.Pattern; import java.util.zip.ZipEntry; @@ -232,4 +235,25 @@ public class Utils { } 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; + } }