0

2 つの SQL 日付の違いを見つけるときに、間違った日数を取得しています。以下にその方法を示します。

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 を取得します。

4

2 に答える 2

2

これが問題です:

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

日、月、年の順序でフォーマットを見てから、データを見てください。私はあなたが望むと信じています:

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

(代わりに Joda Time 書式設定クラスを使用することもお勧めします...)

于 2013-10-08T15:01:54.743 に答える