无法获得2个月之间的天数 - 具体情况

时间:2013-11-25 14:26:00

标签: java date calendar

我这个格式的日期很少:31/08/13我正在从xls文件中获取文件

我需要做的是获取上个月并计算这些日期之间的天数。我真的不知道该怎么做。

以下是我的尝试:

代码编辑*

Calendar start = Calendar.getInstance();
                                Calendar end = Calendar.getInstance();
                                end.setTime(row.getCell(0).getDateCellValue());
                                start.add(start.MONTH,-1);

                                Date startDate = start.getTime();
                                Date endDate = end.getTime();
                                long startTime = startDate.getTime();
                                long endTime = endDate.getTime();
                                long diffTime = endTime - startTime;
                                long diffDays = diffTime / (1000 * 60 * 60 * 24);

                                if(diffDays < 0){
                                    System.out.println(Math.abs(diffDays));
                                }

                                DateFormat dateFormatw = DateFormat.getDateInstance();
                                System.out.println("The difference between "+
                                  dateFormatw.format(startDate)+" and "+
                                  dateFormatw.format(endDate)+" is "+
                                  diffDays+" days.");

但似乎错了。因为我太累了,我真的无法理解它。我没有运气就失去了太多时间。

我试图在一个月前获得相同的日期并计算这两个日期endTimestartTime之间的天数

请帮助我!

1 个答案:

答案 0 :(得分:1)

我不知道ProdCalendar是什么,它可能是你项目内部的东西。但是,获得两个日期之间的天数的简单方法是(我认为)你想要的是:

//First date
Date d1 = dateFormat.parse("31-10-13");

//Second date
Date d2 = dateFormat.parse("31-08-13");

//Interval:     
long intervalMs = d1.getTime() - d2.getTime();
long intervalDays = intervalMs/(1000*60*60*24);

在您的代码中,date22仅使用new date()初始化,因此它将是当前系统时间。您正在将其(以非压缩的方式)与从电子表格中检索的日期进行比较。我还注意到开头附近的这行中的日历cal

Calendar cal = Calendar.getInstance();
cal.setTime(row.getCell(0).getDateCellValue());

不再使用,所以似乎是多余的。

你的代码比它需要的更复杂,所以你需要退一步思考你想要实现的目标。简单的代码是很好的代码。