日期比较是错误的

时间:2015-08-30 00:21:07

标签: java date

我有以下Java代码在Netbeans上工作。但是我还有两个问题需要解决。

1)日期之间的输出始终为1.

2)我无法获得显示星期几的日期格式

注释: 我不能使用Joda Time,我知道使用脚本已经糟糕了10年多。我不关心夏令时或闰年。我已经研究了这个主题好几天了,并且了解这个主题有多少次被提出来。

这是我到目前为止所拥有的。任何帮助表示赞赏。

SimpleDateFormat format = new SimpleDateFormat("EEE, MMM dd     yyyy");

            String date1 =request.getParameter("firstdate");

            String date2 =request.getParameter("seconddate");

            int answer = date2.compareTo(date1);

        out.println(date1);

        out.println(date2);

        out.println(" " + answer + " days");

我尝试过使用:

Days days = Days.daysBetween(new DateTime(date1), new DateTime(date2));
int daysBetweenDates = days.getDays();

以及

Period period = new Period(date1, date2);

我没有想法,并且认为某些事情与我所做或所包含的内容(不包括在内)相混淆。非常感谢任何帮助。

使用FIX更新

最后我遇到的问题是用户选择的日期是作为字符串存储的。我只是把它改成了以下内容,一切都到位了:

 <%

    String date1 =request.getParameter("firstdate");

    String date2 =request.getParameter("seconddate");

        SimpleDateFormat dateformat = new SimpleDateFormat ("E yyyy.MM.dd"); //SDF to display output with day of week

    // This piece here made everything work fine
    Date displaydate1=new Date(date1); 

    Date displaydate2=new Date(date2);

    int differenceInDays = (int) ((displaydate2.getTime() - displaydate1.getTime())/(1000*60*60*24));//common method to calculate number of days

out.println("Between " +dateformat.format(displaydate1)+ " and " +dateformat.format(displaydate2)+ " there are " +differenceInDays+ " days");

 %>

1 个答案:

答案 0 :(得分:1)

我发现问题是我的日期是字符串类型而不是日期。我尝试了许多其他人的想法来改变它但却无法工作。最后我所做的就是把输入的日期作为日期类型重新运行....有时最简单的解决方案是我最难弄清楚但我得到了它并很高兴从中学到了很多东西。我必须做的研究因为它。 这是最后完成的代码部分。我还用修复程序编辑了我的问题:

     <%

    String date1 =request.getParameter("firstdate");

    String date2 =request.getParameter("seconddate");

        SimpleDateFormat dateformat = new SimpleDateFormat ("E yyyy.MM.dd"); //SDF to display output with day of week

    Date displaydate1=new Date(date1); //This fixed everything

    Date displaydate2=new Date(date2);

    int differenceInDays = (int) ((displaydate2.getTime() - displaydate1.getTime())/(1000*60*60*24));//common method to calculate number of days

out.println("Between " +dateformat.format(displaydate1)+ " and " +dateformat.format(displaydate2)+ " there are " +differenceInDays+ " days");

 %>