remaining Time To Human Readable Form : Time « Date Type « Android






remaining Time To Human Readable Form

  
//package eu.tanov.android.sptn.util;

import java.util.Calendar;
import java.util.Date;

import android.util.Log;

public class TimeHelper {
  private static final int MILLIS_TO_MINUTES = 1000 * 60;
  private static final int MILLIS_TO_HOURS = MILLIS_TO_MINUTES * 60;

  private static final String SEPARATOR_ESTIMATED_TIME = ",";
  private static final String TAG = "TimeHelper";
  private static final int SPACE_PER_REMAINING_TIME = 10;

  /**
   * utility class - no instance
   */
  private TimeHelper() {
  }

  public static String toRemainingTime(Date now, String timeData,
      String formatOnlyMinutes, String formatMinutesAndHours) {
    final Calendar calendar = Calendar.getInstance();
    calendar.setTime(now);

    final String[] times = timeData.split(SEPARATOR_ESTIMATED_TIME);
    final StringBuilder result = new StringBuilder(times.length * SPACE_PER_REMAINING_TIME);
    for (String time : times) {
      try {
        result.append(toRemainingTime(now, time, formatOnlyMinutes, formatMinutesAndHours, calendar));
        result.append(SEPARATOR_ESTIMATED_TIME);
      } catch (Exception e) {
        Log.e(TAG, "could not convert " + time, e);
        result.append(time);
      }
    }
    if (result.length()>0) {
      //remove last comma
      result.deleteCharAt(result.length() - 1);
    }
    
    return result.toString();
  }

  private static String toRemainingTime(Date now, String time,
      String formatOnlyMinutes, String formatMinutesAndHours,
      Calendar calendar) {
    final String[] hoursMinutes = time.split(":");
    if (hoursMinutes.length != 2) {
      throw new IllegalArgumentException(
          "could not split hours-minutes: " + time);
    }
    calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hoursMinutes[0]));
    calendar.set(Calendar.MINUTE, Integer.parseInt(hoursMinutes[1]));

    final long arrivingTime = calendar.getTimeInMillis();

    final long remainingTimeInMillis = arrivingTime - now.getTime();
    if (remainingTimeInMillis < 0) {
      throw new IllegalArgumentException(String.format(
          "negative remaining time: time = %s, now = %s, diff = %s",
          time, now, remainingTimeInMillis));
    }
    return remainingTimeToHumanReadableForm(remainingTimeInMillis, formatOnlyMinutes, formatMinutesAndHours);
  }

  /**
   * @param remaining
   * @return something like ~1?.22?.
   */
  private static String remainingTimeToHumanReadableForm(long remaining,
      String formatOnlyMinutes, String formatMinutesAndHours) {
    int minutes = (int) ((remaining % MILLIS_TO_HOURS) / MILLIS_TO_MINUTES);
    int hours = (int) (remaining / MILLIS_TO_HOURS);
    
    if (hours > 0) {
      return String.format(formatMinutesAndHours, hours, minutes);
    } else {
      return String.format(formatOnlyMinutes, minutes);
    }
  }

  public static String removeTrailingSeparator(String timeData) {
    if (!timeData.endsWith(SEPARATOR_ESTIMATED_TIME)) {
      return timeData;
    }
    // sometimes estimated time has one more comma: 21:00,21:20,
    return timeData.substring(0, timeData.length() - 1);
  }

}

   
    
  








Related examples in the same category

1.Timer task
2.Using Timer to do repeat task
3.Get Time String From Milliseconds
4.Returns the current time since 1970, UTC, in seconds.
5.Returns the current time since 1970, UTC, in milliseconds.
6.Converts time from a long to a string in a format set by the user in the phone's settings.
7.Returns the current time since 1970, local time zone, in milliseconds.
8.time From Local Millis
9.Given a number, round up to the nearest power of ten times 1, 2, or 5. The argument must be strictly positive.
10.Thread based Timer
11.Create Timestamp
12.Timestamp to Local time in long
13.Timestamp to UTC
14.Get Current Time
15.Get Elapsed Time Minutes Seconds String
16.Get Time String
17.Get Moscow Time
18.Returns the time represented by the time String.
19.Utils for calculating sleep time
20.int To String Time Format
21.millis To Seconds To Time Str
22.Convert time in seconds to a string in 00:00:00
23.Get a readable string displaying the time
24.Return the time in ms into format MM:SS
25.Get Time Difference
26.TimeSpan class
27.Calculate how many days the first time is expired than second time.
28.Checks if the first parameter is after the second parameter in time.
29.Checks if the first parameter is before the second parameter in time.
30.GMT (UTC) Time Converter