寻找日差的代码

时间:2014-07-21 13:38:40

标签: java android

我正在尝试编写函数来查找两个日期之间的日差,它工作正常,但结果会在相同的输入中更改一些时间。请说当前日期是21/7/2014,结果有一段时间是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, 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);

2 个答案:

答案 0 :(得分:0)

我认为这是因为以奇怪的方式完成了几个小时......

当我添加以下代码时,我似乎工作正常:

cal.set(Calendar.HOUR_OF_DAY, 1);
startDate.set(Calendar.HOUR_OF_DAY, 1);

答案 1 :(得分:0)

这里的问题是当您实例化日历时,您将获得当前的日期和时间。因此,当您忽略时间值时,它会完美运行。

两个比较两个日期最好使用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)

问题实际上是假设您正在比较今天的日期和明天的日期。

即21/7/2014和22/7/2014。天数的差异是一个。如果您在午夜12:00运行程序,您将获得1.并且在此之后的任何其他时间它将导致0.这是因为获得当前时间和日期