Java 分析webapp中的日期时出错

Java 分析webapp中的日期时出错,java,date,jodatime,Java,Date,Jodatime,我在我的web应用程序中使用以下功能来比较两个日期相等或之后或之前 public class DateComareClass{ public static void main(String args[]) throws ParseException, IOException { DateTimeComparator dateTimeComparator=DateTimeComparator.getDateOnlyInstance(); Calendar

我在我的web应用程序中使用以下功能来比较两个日期相等或之后或之前

public class DateComareClass{

    public static void main(String args[]) throws ParseException, IOException {

        DateTimeComparator dateTimeComparator=DateTimeComparator.getDateOnlyInstance();
        Calendar cal = Calendar.getInstance();
        DateFormat dftreg = new SimpleDateFormat("yyyy-MM-dd");
        Date currentDate = new Date(cal.getTime().getTime());
        Date SignUpDateCheck = (Date) dftreg.parse("2018-07-05");
        System.out.println(SignUpDateCheck + " is the SignUpDateCheck ");
        System.out.println(currentDate + " is the currentDate ");
        int retval=dateTimeComparator.compare(currentDate,SignUpDateCheck);
        System.out.println(retval);
        SignUpDateCheck = (Date) dftreg.parse("2018-07-13");

        System.out.println(SignUpDateCheck + " is the SignUpDateCheck ");
        System.out.println(currentDate + " is the currentDate ");
        retval=dateTimeComparator.compare(currentDate,SignUpDateCheck);
        System.out.println(retval);


    }
}
它打印

Thu Jul 05 00:00:00 2018 is the SignUpDateCheck  
Thu Jul 12 12:03:39 2018 is the currentDate
1
Fri Jul 13 00:00:00 2018 is the SignUpDateCheck  
Thu Jul 12 12:03:39 2018 is the currentDate 
-1
但是,如果我在我的webapp中使用相同的逻辑,它似乎总是将retval打印为-1,无论它是在日期之后、之前还是等于日期

webapp中的我的代码片段

String GenerateSignupDate=year+"-"+month+"-"+day;
SignUpDateCheck= (Date) dftreg.parse(GenerateSignupDate);
System.out.println(SignUpDateCheck + " is the SignUpDateCheck ");
System.out.println(currentDateReg + " is the currentDateReg ");
//System.out.println(SignUpDateCheck.before(currentDateReg) + " is the answer ");
retval=dateTimeComparator.compare(currentDate,SignUpDateCheck);
System.out.println(retval + " is the retval ");
但是注册时,当前日期打印正确。它只会错误地打印返回值


非常感谢您的帮助。

您能在您的Web应用程序中显示
System.out.println
调用的结果吗?您尝试过使用调试器单步执行吗?另外,请复制/粘贴webapp代码段,而不是在中键入它。。。似乎在未声明
SignUpDateCheck=(Date)dftreg…
之前缺少
Date
。MCVE(感谢您这么做)和您声称在webapp中运行的内容之间有足够的差异,我们无法确定发生了什么。请发布webApp中完整的实际代码,以及您获得的实际输出,并将注释的
println
取消注释。在获取您的“web app”片段并通过修复错误和提供缺少的声明使其可执行后,我无法重现该行为。很明显,你的webapp中存在一些不同之处,它与你发布的[MCVE]不匹配。因为你已经在使用Joda Time,我认为该库旨在取代旧的、设计拙劣的类
Date
Calendar
和(至少部分地)
SimpleDataFormat
,我想知道为什么您也在使用那些旧类?当然,第三个选择是继续,因为Joda Time现在处于维护模式。