我想将日期与当前日期进行比较,如果差异为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);
答案 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();