/* Copyright (C) 2001, 2007 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. */ package gov.nasa.worldwind.layers.rpf.wizard; /** * @author dcollins * @version $Id: TimeFormatter.java 4529 2008-02-20 03:27:48Z dcollins $ */ public class TimeFormatter { private static final long ONE_HOUR = 60L * 60L * 1000L; private static final long ONE_MINUTE = 60L * 1000L; private static final long ONE_SECOND = 1000L; public TimeFormatter() {} public String formatPrecise(long millis) { long[] hms = millisToHMS(millis); return String.format("%02d:%02d:%02d", hms[0], hms[1], hms[2]); } public String formatEstimate(long millis) { String result; // Less than a minute. if (millis < ONE_MINUTE) { result = "less than 1 minute"; } // Report time in one-minute increments. else if (millis < 10L* ONE_MINUTE) { millis = ONE_MINUTE * Math.round(millis / (double) ONE_MINUTE); long m = millis / ONE_MINUTE; result = "about " + m + (m > 1 ? " minutes" : " minute"); } // Report time in ten-minute increments. else if (millis < 55L * ONE_MINUTE) { millis = 10L * ONE_MINUTE * Math.round(millis / (10d * ONE_MINUTE)); long m = millis / ONE_MINUTE; result = "about " + m + " minutes"; } // Report time in half-hour increments. else { millis = 30L * ONE_MINUTE * Math.round(millis / (30d * ONE_MINUTE)); long h = millis / ONE_HOUR; result = "about " + h + (h > 1 ? " hours" : " hour"); long m = (millis / ONE_MINUTE) % 60L; if (m > 0) result += " " + m + " minutes"; } return result; } private static long[] millisToHMS(long millis) { return new long[] { (long) (Math.floor(millis / (double) ONE_HOUR) % 60d), // hours (long) (Math.floor(millis / (double) ONE_MINUTE) % 60d), // minutes (long) (Math.floor(millis / (double) ONE_SECOND) % 60d)}; // seconds } }