Java 查找日差的代码
我正在尝试编写函数,以查找两个日期之间的日差,结果正常,但在相同的输入中会发生一些时间变化。假设当前日期为2014年7月21日,结果一段时间为567,另一段时间为566 守则:Java 查找日差的代码,java,android,Java,Android,我正在尝试编写函数,以查找两个日期之间的日差,结果正常,但在相同的输入中会发生一些时间变化。假设当前日期为2014年7月21日,结果一段时间为567,另一段时间为566 守则: //TO GET THE CURRENT DATE Calendar cal = Calendar.getInstance(); //THE CAL.ADD BECUSE THE 1ST MONTH IN THE YEAR IS 0 NOT 1 cal.add(Calendar.MONTH
//TO GET THE CURRENT DATE
Calendar cal = Calendar.getInstance();
//THE CAL.ADD BECUSE THE 1ST MONTH IN THE YEAR IS 0 NOT 1
cal.add(Calendar.MONTH, 1);
//TO SET THE START DATE WICH IS 1/1/2013
Calendar startDate=Calendar.getInstance();
startDate.set(Calendar.DAY_OF_MONTH, 1);
startDate.set(Calendar.MONTH,1);
startDate.set(Calendar.YEAR, 2013);
//TO FIND THE DIFF BETWEEN THE START DATE AND CUREENT DATE , THE +1 BECUSE IT IS
ALWAYS LESS BY ONE DAY
long diff=(((cal.getTimeInMillis()-
startDate.getTimeInMillis())/(1000*60*60*24))+1);
我认为这是因为时间以一种奇怪的方式循环 在我这方面,当我添加以下代码时,它似乎工作得很好:
cal.set(Calendar.HOUR_OF_DAY, 1);
startDate.set(Calendar.HOUR_OF_DAY, 1);
这里的问题是,当您实例化日历时,您得到的是当前日期和时间。因此,当您忽略时间值时,它可以完美地工作 比较两个日期最好使用Date类和java并使用以下代码 因此,您的上述代码可以重写为
Date cal = new Date(114, 7, 21); //Date is 21/7/2014
Date startDate = new Date(113, 1, 1); Date is 1/1/2013
long newdiff = ((cal.getTime()-startDate.getTime())/(1000*60*60*24));
System.out.println(newdiff);
这一次它将正确打印566,实际差异为566
问题是,假设你比较今天的日期和明天的日期
ie 2014年7月21日和2014年7月22日。天数的差别是一。如果您在午夜12:00运行该程序,您将获得1。在这之后的任何其他时间,它将导致0。这是因为获取当前时间和日期可能重复的时间,他们确定使用Joda time是处理此问题的最佳方法。但是,这个解决方案很好地替代了使用Joda时间库:考虑到您的重播,我尝试了它,但它没有解决问题。考虑到,我尝试了它,但我得到了错误构造函数Dateint,int,int实际上是不推荐的,这只是一个警告,表明代码是旧的。。Calendar类取代了date类,但出于您的目的,最好使用date类,因为它更简单,更易于使用。我认为您的点击是有用的,我使用了GregorianCalendar,它现在可以正常工作了,考虑您的时间