2013-10-08 52 views
0

找到兩個sql日期之間的差異時,我得到錯誤的天數。 下面顯示的方法:使用JodaTime獲取錯誤天數

public Vector getAvailRoom(String RoomID) 
{ 
      formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
      Date dateA = null; 
      Date dateD = null; 

    Vector vect = new Vector(); 
    try 
    { 

     psmt=con.prepareStatement("select * from Booking where RmID="+RoomID); 

     rs=psmt.executeQuery(); 

     while(rs.next()) 
     { 
         AvailDetails2 avaDet = new AvailDetails2(); 

         avaDet.BookArrivalDate = rs.getString("BookArrivalDate"); 
         avaDet.BookDepartureDate = rs.getString("BookDepartureDate"); 
         System.out.println(""+avaDet.BookArrivalDate); 
         System.out.println(""+avaDet.BookDepartureDate); 

         try 
         { 
          dateA = (Date) formatter.parse(avaDet.BookArrivalDate); 
          dateD = (Date) formatter.parse(avaDet.BookDepartureDate); 

          DateTime datetimeA = new DateTime(dateA); 
          DateTime datetimeD = new DateTime(dateD); 

          diffDays = Days.daysBetween(datetimeA.toLocalDate(), datetimeD.toLocalDate()).getDays(); 
          System.out.println(""+diffDays); 
          avaDet.BookDiffDays = Integer.toString(diffDays); 
         } 
         catch (Exception egetAvailRoom) 
         { 
          egetAvailRoom.printStackTrace(); 
         } 

         vect.add(avaDet); 
     }  
    } 
    catch (Exception e3) 
    { 

    } 
    return vect;  
}//end getAvailRoom 

假設

BookArrivalDate2013-10-01 00:00:00

BookDepartureDate2013-10-14 00:00:00

我得到4748的區別。

+0

請使用空格而不是製表符來格式化您的代碼 - 目前很難閱讀。 –

+0

另外,請在簡短但完整的*程序中顯示問題。應該沒有必要在這裏涉及數據庫 - 你應該能夠提供一個程序,我們可以複製,粘貼並運行以查看問題。 –

回答

2

這就是問題所在:

formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 

看看你的格式,天,月,年的順序上 - 然後看看你的數據。我相信你想要的:

formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

(我也建議你使用喬達時間格式類,而不是...)

+0

非常感謝你:) –

1

我注意到,您的日期格式爲「DD-MM-YYYY HH:MM :ss「,但你說的兩個日期在 yyyy-MM-dd HH:mm:ss。

這會產生大約13年的差異 - 關於您關閉的天數。