2011-03-02 23 views
6

Quiero calcular la diferencia de tiempo. Tengo tres EditTexts, deseo ingresar los tiempos en los dos primeros textos de edición en formato HH: MM. Y luego calcule la diferencia de tiempo y el resultado se mostrará en el tercer campo de texto de edición en el mismo formato. Si la fecha cambia, la diferencia de tiempo calculará de acuerdo que, es decir,Cómo calcular la diferencia de tiempo entre dos campos de tiempo, con respecto a los cambios de fecha

Si primero tiempo = 23:00 y segundo tiempo = 1:00

entonces, la diferencia de tiempo = 02:00 horas

public class TimeCalculate extends Activity { 

    private String mBlock; 
    private String mBlockoff; 
    private String mBlockon ; 

    // String mHours, mMinutes; 

    Date date1, date2; 

    /** 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(); 

     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(); 
     } 
     mBlock = getDifference(date1, date2); 
     EditText block = (EditText) findViewById(R.id.block); 
     block.setText(mBlock.toString()); 

    } 
public static String getDifference(Date startTime, Date endTime) { 

     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; 
     /*int hours = (int)diff/(60 * 60 * 1000); 
     int minutes = (int) (diff/(60 * 1000)); minutes = minutes - 60 * hours; 
     long seconds = diff/(1000); */ 
     //timeDiff = DateUtils.formatElapsedTime(seconds); 

     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:MM"); 
     Date date = new Date(diff); 
     return simpleDateFormat.format(date); 

    } 

} 

que ejecuta este código, pero da el error como fuente no found.I piensan error en getDifference method.Please da ninguna otra lógica

+1

no lo hago conozca su error, pero tenga cuidado con el 'nuevo SimpleDateFormat (" hh: mm ")' y el 'nuevo SimpleDateFormat (" HH: MM ")'; probablemente quieras '" HH: mm "'. –

Respuesta

28

diferencia de tiempo se calcula siguiente código:

long difference = date2.getTime() - date1.getTime(); 
days = (int) (difference/(1000*60*60*24)); 
hours = (int) ((difference - (1000*60*60*24*days))/(1000*60*60)); 
min = (int) (difference - (1000*60*60*24*days) - (1000*60*60*hours))/(1000*60); 

EDIT:

fecha1 y fecha2 son Date objetos, si usted tiene EditText entonces usted puede convertir el texto en Date al objeto mediante código siguiente,

DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); // Make sure user insert date into edittext in this format. 
    Date dateObject; 

    try{ 
    String dob=(tx.getText().toString()); 
    dateObject = formatter.parse(dob); 
    date = new SimpleDateFormat("dd/MM/yyyy").format(dateObject); 

    } 
+1

¿qué formulario es de fecha2 y fecha1? ¿Están ellos editando texto ... cómo comparar si tenemos dos editeText que contienen tiempo? ? –

Cuestiones relacionadas