2011-03-02 38 views
6

我想计算时间差。我有三个EditText,我想在前两个编辑文本中以HH:MM格式输入时间。然后计算时差,结果将显示在相同格式的第三个edittext字段中。 如果日期的变化,该时间差将根据该计算,即如何计算两个时间域之间的时间差,相对于日期的变化

如果第一时间= 23:00和第二时间= 01:00

然后,时间差= 02:00小时

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); 

    } 

} 

我这段代码执行时,却给出了错误的来源不found.I认为错误在getDifference method.Please给任何其他逻辑

+1

我不知道你的错误,但要注意'新的SimpleDateFormat(“hh:mm”)'和'新的SimpleDateFormat(“HH:MM”)';你可能想要''HH:mm“'。 – 2011-03-02 20:08:34

回答

28

时间差是由下面的代码计算:

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); 

编辑:

日期1和date2是Date对象,如果你有EditText,那么你可以通过下面的代码将文本信息转换到Date对象,

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

date2和date1是什么形式?他们是否编辑文本..如果我们有两个包含时间的editeText如何比较。 ? – 2014-04-07 04:44:32

相关问题