Как рассчитать разницу во времени и показать результат в формате 00:00? - PullRequest
1 голос
/ 02 марта 2011

Как рассчитать разницу во времени и показать результат в формате 00:00.Я не могу найти способ, как отправить данные строки в дату и как отобразить результат в формате EditText 00:00.Я попробовал это сам, но он показывает ошибку, что источник не найден.Ниже приведен код.

public class TimeCalculate extends Activity {

private String mBlock = null;
private String mBlockoff = null;
private String mBlockon = null;

     Date date1,date2;
     EditText block;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    EditText blockoff = (EditText) findViewById(R.id.blockoff);
    mBlockoff = blockoff.getText().toString();

    EditText blockon = (EditText) findViewById(R.id.blockon);
    mBlockon = blockon.getText().toString();
    block = (EditText) findViewById(R.id.block);
    mBlock = getDifference(date1, date2);

         date1 = new Date(mBlockoff);
    date2 = new Date(mBlockon);

              blockon.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            block = (EditText) findViewById(R.id.block);
            mBlock = getDifference(date1, date2);
            block.setText(mBlock);
        }

}

public static String getDifference(Date startTime, Date endTime) {
    String timeDiff;
    if (startTime == null)
        return "[corrupted]";
    Calendar startDateTime = Calendar.getInstance();
    startDateTime.setTime(startTime);
    Calendar endDateTime = Calendar.getInstance();
    endDateTime.setTime(endTime);
    long milliseconds1 = startDateTime.getTimeInMillis();
    long milliseconds2 = endDateTime.getTimeInMillis();
    long diff = milliseconds2 - milliseconds1;
    long hours = diff / (60 * 60 * 1000);
    long minutes = diff / (60 * 1000);
    minutes = minutes - 60 * hours;
    long seconds = diff / (1000);

    timeDiff = hours + ":" + minutes;
    return timeDiff; 
}
}

Мой модифицированный код с использованием SampleDateFormat

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm");

    try {
        date1 = simpleDateFormat.parse(mBlockoff);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        date2 = simpleDateFormat.parse(mBlockon);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Затем я вызвал метод следующим образом

blockon.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            mBlock = getDifference(date1, date2);
            block.setText(mBlock);
        }

Ответы [ 2 ]

10 голосов
/ 02 марта 2011

Один из подходов может быть:
Рассчитайте разницу в миллисекундах, конвертируйте ее в секунды и затем используйте DateUtils.elapsedTime(int sec) для форматирования прошедшего времени в формате чч: мм.

См. Документацию для DateUtils , Форматер .

Редактировать: пример кода: эта функция будет возвращать время в hh:mm:ss формате

String getDifference(long now, long then){
        if(now > then)
            return DateUtils.formatElapsedTime((now - then)/1000L);
        else 
            return "error";
    }
2 голосов
/ 15 октября 2012

Попробуйте этот код:

 public String timeDiff(int hourStart, int hourEnd, int minuteStart, int minuteEnd){    
        int hourDiff = 0;
        int minDiff = 0;
        if(hourEnd>hourStart){
            hourDiff = hourEnd-hourStart;
        }
        if(hourEnd<hourStart){
            hourEnd = hourEnd+12;
            hourStart = hourStart-12;
            hourDiff= hourEnd-hourStart;
            }
        if(minuteEnd>minuteStart){
            minDiff = minuteEnd-minuteStart;
        }
        if(minuteEnd<minuteStart){
            minuteEnd=minuteEnd+30;
            minuteStart=minuteStart-30;
            minDiff = minuteEnd-minuteStart;
        }

        return hourDiff+":"+minDiff;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...