2016-03-02 156 views
0

之間的區別,我有兩個primefaces日曆組件如下:計算兩個日期時間

<h:outputLabel value="#{prezmsg['MAINTENANCE.DATE_DEBUT']}"/> 
<p:calendar id="dateDebut-create" 
      value="#{maintenanceMBean.webBean.vo.dateDebut}" 
      pattern="dd-MM-yyyy HH:mm:ss" mask="true"> 
    <p:ajax event="dateSelect" listener="#{maintenanceMBean.webBean.dateDiff}"/> 
</p:calendar> 
<p:message for="dateDebut-create"/> 

<h:outputLabel value="#{prezmsg['MAINTENANCE.DATE_FIN']}"/> 
<p:calendar id="dateFin-create" 
      value="#{maintenanceMBean.webBean.vo.dateFin}" pattern="dd-MM-yyyy HH:mm:ss" 
      mask="true"> 
    <p:ajax event="dateSelect" listener="#{maintenanceMBean.webBean.dateDiff}"/> 
</p:calendar> 
<p:message for="dateFin-create"/> 

所以我要計算這兩個日曆組件之間只有時間上的差異,並把該值在其他日曆是隻有時間。

<h:outputLabel value="#{prezmsg['MAINTENANCE.DUREE']}"/> 
       <p:calendar id="duree-create" value="#{maintenanceMBean.webBean.vo.duree}" pattern="HH:mm:ss" 
          timeOnly="true" readonly="true"/> 
       <p:message for="duree-create"/> 

當我選擇的開始日期和此功能被觸發結束日期:

public void dateDiff(SelectEvent event){ 
     if(getVo().getDateDebut() != null && getVo().getDateFin() != null){ 

      Date calculatedTime = null; 
      long diff = getVo().getDateFin().getTime() - getVo().getDateDebut().getTime(); 
      long diffSeconds = diff/1000 % 60; 
      long diffMinutes = diff/(60 * 1000) % 60; 
      long diffHours = diff/(60 * 60 * 1000); 

      try { 
       calculatedTime = new SimpleDateFormat("HH:mm:ss").parse(diffHours+":"+diffMinutes+":"+diffSeconds); 
       System.out.print("Calculated Time : " + calculatedTime); 
      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 

      getVo().setDuree(calculatedTime); 
     } 
    } 

所以在控制檯我有這樣的信息:Calculated Time : Fri Jan 02 00:00:00 GMT 1970和我第三組元沒有設置值。

+1

所以實際的問題是如何在Ajax請求後更新的組件。你的頭銜是錯的,你注意到了嗎?如果你能問核心問題,很可能你會找到一個重複的問題。 – Kukeltje

回答

0

你的Ajax事件需要一旦你計算出的差異update第三日曆組件:

<p:ajax event="dateSelect" 
listener="#{maintenanceMBean.webBean.dateDiff}" update="duree-create"/>