2015-09-23 1 views
-2

Как рассчитать разницу во времени в java на основе ввода пользователем? Ниже приведен фрагмент рабочего кода.Рассчитать разницу во времени на основании ввода пользователем

@Override 
      public void onTimeSet(TimePicker view,int hourofDay, int minute) 
      { 

       if (flag == FLAG_START_DATE) { 
        start.setText(Integer.toString(hourofDay) + "." + Integer.toString(minute)); 
        b=start.getText().toString(); 
       } else if (flag == FLAG_END_DATE) { 
        end.setText(Integer.toString(hourofDay) + "." + Integer.toString(minute)); 
        c=end.getText().toString(); 
        //endTime=hourofDay; 
       } 

       SimpleDateFormat format= new SimpleDateFormat("HH:mm"); 
       Date date1=format.parse(b); 
       Date date2=format.parse(c); 
       long difference=date2.getTime()-date1.getTime(); 
       editText.setText(""+difference); 


      } 


     } 

ошибка: незарегистрированное исключение ParseException; должен быть пойман или объявлен брошенным

+2

Сделайте то же самое, что предложено сообщением об ошибке – e4c5

ответ

1

Из-за вашей ошибки, это было вызвано ParseException, вы можете исправить это, добавив try и catch.

try{ 
     // do your calculation here 
     // for your case will be: 
      SimpleDateFormat format= new SimpleDateFormat("HH:mm"); 
      Date date1=format.parse(b); 
      Date date2=format.parse(c); 
      long difference=date2.getTime()-date1.getTime(); 
      editText.setText(""+difference); 
    } 
    catch(ParseException ex){ 
      System.err.println("ouch!"); 
    } 

Вы можете преобразовать общее различное миллисекунду в часы, минуты, секунды и т.д.

int seconds = (int) (difference/ 1000) % 60 ; 
int minutes = (int) ((difference/ (1000*60)) % 60); 
int hours = (int) ((difference/ (1000*60*60)) % 24); 
//etc... 
+0

Спасибо, но почему он не отображает значение (разницу) в editText? – Hoo

+0

попробуйте изменить свой '.' на': ', так как ваш формат': ' –

+0

Спасибо ...... :)! – Hoo

1

Вы должны поймать ParseException, что может быть выброшено из parse() вызовов:

try { 
    SimpleDateFormat format= new SimpleDateFormat("HH:mm"); 
    Date date1=format.parse(b); 
    Date date2=format.parse(c); 
    long difference=date2.getTime()-date1.getTime(); 
    editText.setText(""+difference); 
} catch (ParseException pe) { 
    editText.setText("Failed to parse dates"); // or whatever you want 
} 
1

Попробуйте заменить . сепаратор с : сепаратор для работы во времени и отдыхе класс

if (flag == FLAG_START_DATE) { 
        start.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute)); 
        b=start.getText().toString(); 
       } else if (flag == FLAG_END_DATE) { 
        end.setText(Integer.toString(hourofDay) + ":" + Integer.toString(minute)); 
        c=end.getText().toString(); 
        //endTime=hourofDay; 
       } 
Смежные вопросы