java - 使用 JodaTime 获取错误的天数

标签 java sql ms-access-2007 jodatime

在查找两个 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 的差额。

最佳答案

这就是问题:

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

按照日、月、年的顺序查看您的格式 - 然后查看您的数据。我相信你想要:

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

(我还鼓励您改用 Joda Time 格式化类...)

关于java - 使用 JodaTime 获取错误的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19251262/

相关文章:

java - JAXB:如何解码包装器内不同类型的对象列表?

java - 在 web.xml 中引用环境变量

java - eclipse中创建新类时创建日志实例

vba - Access 2007 中的颜色常量

java - HttpServletRequest XML 字符串参数在 POST 操作中丢失 HTML 实体

php - 正确的mysql查询来查询一个表并为另一个表查询提供信息

mysql - COUNT 与 RANK mysql

sql - 如何每12小时执行一次 Action ?

database - 获取不满足查询的数据

java - 如何在 Java Swing 中创建简单的表格?