2013-07-18 79 views
0

我需要幫助,我有一個arrayList的對象。此對象包含兩個日期字段(date_panne date_mise and running)和兩個其他時間字段(heure_panne and time start), 我對這個問題感興趣的多個字段我想獲得(date_panne, heure_panne)(date_mise_en_marche; heure_mise_en_marche)之間的差異總和,以給出總失敗時間。 如果有人能幫助我,請我會gratful這是我的函數:未能操縱我的Arraylist

public String disponibile() throws Exception { 

    int nbreArrets = 0; 
    List<Intervention> allInterventions = interventionDAO.fetchAllIntervention(); 
    List<Intervention> listInterventions = new ArrayList<Intervention>(); 

    for (Intervention currentIntervention : allInterventions) { 
     if (currentIntervention.getId_machine() == this.intervention.getId_machine() 
      && currentIntervention.getDate_panne().compareTo(getProductionStartDate()) >= 0 
      && currentIntervention.getDate_panne().compareTo(getProductionEndDate()) <= 0) { 

      listInterventions.add(currentIntervention); 
     } 
    } 
    savedInterventionList = listInterventions; 

    return "successView" ; 
} 
+1

請尊重Java命名約定,並正確地格式化您的代碼。選擇含義變量名稱。 mp1,mp2,getP1()...這使得你的代碼不可讀,即使對你自己也是如此。 –

+0

謝謝你這個remarques會嘗試正確格式化我的代碼;關於mp和mp2,其名稱爲arraylist,getP1和anad getP2這是兩個日期P1(開始生產日期)的吸氣劑,P2是它的最終生產日期,非常感謝你 – Bichoua

+0

如果你需要解釋什麼是變量或方法是,那麼它的名字很不好。爲什麼不命名getters getProductionStartDate()'和'getProductionEndDate()'?它不是很清楚嗎? –

回答

0

假定的日期將被截斷後的今天,是java.util.Date類型,並且該次僅包含小時,分鐘,秒和毫秒,是Date類型的同時,通過創造一個像

private Date combine(Date dateOnly, Date timeOnly) { 
    Calendar dateCalendar = Calendar.getInstance(); 
    dateCalendar.setTime(dateOnly); 
    Calendar timeCalendar = Calendar.getInstance(); 
    timeCalendar.setTime(timeOnly); 

    dateCalendar.add(Calendar.HOUR_OF_DAY, timeCalendar.get(Calendar.HOUR_OF_DAY)); 
    dateCalendar.add(Calendar.MINUTE, timeCalendar.get(Calendar.MINUTE)); 
    dateCalendar.add(Calendar.SECOND, timeCalendar.get(Calendar.SECOND)); 
    dateCalendar.add(Calendar.MILLISECOND, timeCalendar.get(Calendar.MILLISECOND)); 

    return dateCalendar.getTime(); 
} 

的方法現在開始,它只是通過要總結干預循環,計算日期之間的差值爲毫秒之內,並添加它們:

long totalMillis = 0L; 
for (Intervention intervention : interventions) { 
    Date marche = combine(intervention.getDateMiseEnMarche(), intervention.getTimeMiseEnMarche()); 
    Date panne = combine(intervention.getDatePanne(), intervention.getTimePanne()); 
    long differenceInMillis = marche.getTime() - panne.getTime(); 
    totalMillis += differenceInMillis; 
} 
+0

感謝JB Nizet先生,我會嘗試這個建議,但在我的情況下,時間是時間java.sql.Time,我希望這是類似的 – Bichoua

+0

java.sql.Time extends java。 util.Date。它是相似的。 –

+0

非常感謝Nizet先生,它工作:),我很滿意:D – Bichoua