计算两个日期之间的天数错误输出

Calculating days between two dates wrong output

关于这个问题有很多重复的问题,我已经浏览了其中的大部分并且必须编写我的代码,但是它没有用。

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Calendar date1 = Calendar.getInstance();
Calendar date2 = Calendar.getInstance();
String targetDate = "18/05/2015";

date2.setTime(formatter.parse(targetDate));
long diff = date2.getTimeInMillis() - date1.getTimeInMillis();
long daysPassed = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);

System.out.println("Today is : "+formatter.format(date1.getTime()));
System.out.println("Target date is : "+targetDate);
System.out.println("Difference of days between them is : "+daysPassed); 

输出为:

//Today is : 17/05/2015 
//Target date is : 18/05/2015 
//Difference of days between them is : 0

它有效,但少了一天,我可以只加 +1,但如果是同一天,它会给出 0,所以就是...

我应该说这是一个 uni 项目,我不能使用外部库或尚未教授的东西。

它还给出了一个烦人的解析异常错误,该错误一直遍及整个代码

如果输出date1和date2的timeInMillis,会得到2个long值,例如:

1431964800000
1431916207715

差异为 48592285

这个值可以解释为:

48592285 milliseconds
48592285/1000 = 48592.285 seconds
48592285/1000/60 = 809.87 minutes
48592285/1000/60/60 = 13.50 hours
48592285/1000/60/60/24 = 0.56 days

这就是您在指定的 2 个日期之间得到 0 的原因。