如何获得正确的日期差异

时间:2014-10-25 16:55:48

标签: android eclipse date

我想将日期与当前日期进行比较,如果差异为2个月或6年或一年,则执行某些操作..但我有一个问题如何获得正确的差异,例如,如果当前月份是2015年和另外一个月是10 2014年,我会得到8个差异,但实际差异是4 ..怎么做?

    Calendar c = Calendar.getInstance();
        System.out.println("Current time => " + c.getTime());
        SimpleDateFormat d = new SimpleDateFormat("dd");
        SimpleDateFormat m = new SimpleDateFormat("MM");
        SimpleDateFormat ye = new SimpleDateFormat("yyyy");
        String day = d.format(c.getTime());
        String month = m.format(c.getTime());
        String year = ye.format(c.getTime());
        int d1=Integer.parseInt(day);
        int m1=Integer.parseInt(month);
        int d2=25;
        int m2=02;
        int diff=d1-d2;
        String s=String.valueOf(diff);

2 个答案:

答案 0 :(得分:0)

您可以使用两个日期之间的差异(以毫秒为单位)。预先计算您需要/想要作为常数的差异,并与您拥有的差异进行比较,例如:

static final long DAY = 1000 * 60 * 60 * 25;
static final long MONTH = DAY * 30;

...

int diff = d1 - d2;
if(diff > MONTH) { 
   //more than a month difference
}

如果你需要更复杂的东西,你应该使用像Joda Time这样的库,这将提供一套更全面的功能来配合时间。

答案 1 :(得分:0)

您正在计算两个 int 之间的差异,因此无法正常工作。

您应该在两个日期或两个之间计算它(以秒或毫秒为单位)

long oneDay, today, delay;
oneDay = 1000*3600*24; //number of milliseconds in a day
today = Calendar.getInstance().getTimeInMillis();
delay = (TheDateYouWantToCompare - today)/oneDay;
if (delay >= 60*oneDay) { //more than 2 months
    //your code
}else{
    //your code
}

如果TheDateYouWantToCompare和今天是约会,它几乎是相同的:

delay = (TheDateYouWantToCompare.getTime() - today.getTime())/oneDay;

修改: 这是如何以毫秒为单位获得时间。

String DateString = "31-12-2015"; 
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
Date myDate = sdf.parse(DateString); 
long timeInMilliseconds = myDate.getTime();