ferrybig

TimeConvertor

Dec 5th, 2014
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.72 KB | None | 0 0
  1. public class TimeConvertor {
  2.  
  3.     private TimeConvertor() {}
  4.     private enum TimeUnits {
  5.  
  6.         MILISECONDS("miliseconds"),
  7.         SECONDS("seconds", 1000, MILISECONDS),
  8.         MINUTES("minutes", 60, SECONDS),
  9.         HOURS("hours", 60, MINUTES),
  10.         DAYS("days", 24, HOURS),
  11.         WEEKS("weeks", 7, DAYS),
  12.         MONTHS("months", 4, WEEKS),
  13.         YEARS("years", 365, DAYS);
  14.  
  15.         private TimeUnits(String friendlyName, long commonDivider, TimeUnits parent) {
  16.             this(friendlyName, commonDivider * parent.getCommonDivider());
  17.         }
  18.  
  19.         private TimeUnits(String friendlyName, long commonDivider) {
  20.             this.friendlyName = friendlyName;
  21.             this.commonDivider = commonDivider;
  22.         }
  23.  
  24.         private TimeUnits(String friendlyName) {
  25.             this(friendlyName, 1);
  26.         }
  27.  
  28.         private final String friendlyName;
  29.         private final long commonDivider;
  30.  
  31.         public long getCommonDivider() {
  32.             return commonDivider;
  33.         }
  34.  
  35.         public String getFriendlyName() {
  36.             return friendlyName;
  37.         }
  38.     }
  39.  
  40.     public static String convertTime(long time, int maxStringComponents, String delimiter) {
  41.         StringBuilder builder = new StringBuilder();
  42.         final TimeUnits[] values = TimeUnits.values();
  43.         long tempTime= 0;
  44.         long tempTimeBuilding;
  45.         for (int i = 0; i < maxStringComponents; i++) {
  46.             TimeUnits lowestUnit = null;
  47.             for (TimeUnits unit : values) {
  48.                 tempTimeBuilding = time / unit.getCommonDivider();
  49.                 if (tempTimeBuilding > 0) {
  50.                     tempTime = tempTimeBuilding;
  51.                     lowestUnit = unit;
  52.                 } else {
  53.                     break;
  54.                 }
  55.             }
  56.             if(lowestUnit == null) {
  57.                 break;
  58.             }
  59.             if (i != 0) {
  60.                 builder.append(delimiter);
  61.             }
  62.             time -= tempTime * lowestUnit.getCommonDivider();
  63.             builder.append(tempTime).append(' ').append(lowestUnit.getFriendlyName());
  64.         }
  65.         return builder.toString();
  66.     }
  67.    
  68.     public static void main(String ... args) {
  69.         System.out.println(convertTime(1, 3, ", "));
  70.         System.out.println(convertTime(10, 3, ", "));
  71.         System.out.println(convertTime(100, 3, ", "));
  72.         System.out.println(convertTime(1000, 3, ", "));
  73.         System.out.println(convertTime(10000, 3, ", "));
  74.         System.out.println(convertTime(100000, 3, ", "));
  75.         System.out.println(convertTime(1000000, 3, ", "));
  76.         System.out.println(convertTime(345127364, 3, ", "));
  77.         System.out.println(convertTime(345127364, 30, ", "));
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment