2013-07-18 4 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 a는 내 코드의 형식을 올바르게 지정하려고 시도해 주셔서 감사합니다. mp 및 mp2, arraylist의 이름 및 getP1 anad getP2 이것은 두 날짜 P1 (시작 생산 날짜) 및 P2 최종 생산 날짜에 대한 게터입니다. 많은 감사합니다. – Bichoua

+0

변수 또는 방법을 설명해야하는 경우 그렇다면 심하게 이름 지어진다. getter의 이름을 getProductionStartDate() 및 getProductionEndDate()로 지정하지 않는 이유는 무엇입니까? 훨씬 명확하지 않니? –

답변

0

가정하면 날짜가 하루립니다 입력 java.util.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 자바를 확장합니다. util.Date. 비슷합니다. –

+0

감사합니다. Nizet 씨, 작동합니다. :) 나는 행복합니다. D – Bichoua

관련 문제