尝试创建日期会返回错误的值

时间:2014-04-10 22:59:24

标签: java date

我的java有点生疏,已经有一段时间没用了。

我要做的是让用户定义一个日期(包含年,月和日的3个整数)并将其转换为日期对象。

我有一个方法如下,这是我在谷歌搜索后得到的结果

private double getTotalPaymentAmount(int sDay, int sMonth, int sYear, int eDay, int eMonth, int eYear)
{
    double total = 0.0;
    Iterator it = payments.entrySet().iterator();
    while (it.hasNext())
    {
        Map.Entry pairs = (Map.Entry)it.next();
        Payment p = (Payment) pairs.getValue();
        Date d = p.getDate();

        Calendar myCalendar = Calendar.getInstance();
        myCalendar.set(sYear, sMonth, sDay, 0, 0, 1);
        Date startDate = myCalendar.getTime();

        myCalendar.set(eYear, eMonth, eDay, 0, 0, 1);
        Date endDate = myCalendar.getTime();

        boolean b = startDate.compareTo(d) * d.compareTo(endDate) > 0;
        System.out.println("Start: " + startDate + " -> End: " + endDate);

        total = total + p.getAmount() ;
    }
    return total;
}

并被以下人员调用,此刻正在被打印出来

return " " + getTotalPaymentAmount(2014,1,1,2014,12,31);

问题是日期完全错误。我希望开始日期为2014-01-01,结束日期为2014-12-31,但打印为

  

开始时间:周六7月07日00:00:01 GMT 6 - >结束:星期六06月06日00:00:01 GMT 37

     

开始时间:周六7月07日00:00:01 GMT 6 - >结束:星期六06月06日00:00:01 GMT 37

     

开始时间:周六7月07日00:00:01 GMT 6 - >结束:星期六06月06日00:00:01 GMT 37

1 个答案:

答案 0 :(得分:0)

在Sotirios Delimanolis和David Wallace的帮助下修复 我忘记了几个月从0开始而不是1,并且我的参数和参数是错误的方式