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

时间:2015-05-18 02:22:34

标签: java date calendar

关于这个问题有很多重复的问题,我已经查看了大部分问题,并制作了我的代码,但它没有用。

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,所以那就是......

我应该说它是一个单一的项目,我不能使用外部图书馆或者还没有被教过的东西。

它还会产生一个令人讨厌的解析异常错误,它会持续遍及代码

1 个答案:

答案 0 :(得分:3)

如果输出date1和date2的timeInMillis,您将获得2个长值,例如:

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

这就是你指定的两个日期之间得0的原因。