Exemple #1
0
 @Override
 public String toString() {
   StringBuilder sb = new StringBuilder();
   long r = period;
   if (r < 0) {
     sb.append('-');
     r = -r;
   }
   TimePeriodUnit[] units = TimePeriodUnit.values();
   int cnt = 0;
   for (int i = units.length; --i >= 0; ) {
     TimePeriodUnit unit = units[i];
     long val = r / unit.period();
     r %= unit.period();
     boolean ms = unit == TimePeriodUnit.SECOND && r > 0;
     if (val > 0 || ms) {
       cnt++;
       sb.append(val);
       if (ms) sb.append('.').append(r / 100).append((r / 10) % 10).append(r % 10);
       sb.append(unit.code());
     }
   }
   if (cnt == 0) sb.append(r);
   return sb.toString();
 }
Exemple #2
0
 public static TimePeriod valueOf(String s) {
   if (s == null) return new TimePeriod(0);
   s = s.trim();
   if (s.isEmpty()) return new TimePeriod(0);
   long period = 0;
   long mul = 1;
   int i = 0;
   if (s.startsWith("+")) i++;
   else if (s.startsWith("-")) {
     i++;
     mul = -1;
   }
   TimePeriodUnit[] units = TimePeriodUnit.values();
   int k = units.length - 1;
   while (i < s.length()) {
     int j = i;
     while (j < s.length() && numChar(s.charAt(j))) j++;
     double part = Double.parseDouble(s.substring(i, j));
     if (j >= s.length()) {
       period += part;
       break;
     }
     while (k >= 0 && s.charAt(j) != units[k].code()) k--;
     if (k < 0) throw new IllegalArgumentException("Invalid time period code: " + s.charAt(j));
     period += part * units[k].period();
     k--;
     i = j + 1;
   }
   return valueOf(mul * period);
 }
Exemple #3
0
 public static TimePeriod valueOf(long n, TimePeriodUnit unit) {
   return new TimePeriod(n * unit.period());
 }