在找到两个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
假设
BookArrivalDate
是2013-10-01 00:00:00
和
BookDepartureDate
是2013-10-14 00:00:00
我得到4748作为差异。
答案 0 :(得分:2)
这是问题所在:
formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
根据日,月和年的顺序查看您的格式 - 然后查看您的数据。我相信你想要:
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
(我也鼓励你使用Joda Time格式化代码......)
答案 1 :(得分:1)
我注意到你的dateFormat是“dd-MM-yyyy HH:mm:ss”,但你说的是你的两个约会日期 yyyy-MM-dd HH:mm:ss。
这会产生大约13年的差异 - 大约是你离开的天数。