额,楼上都是高人啊,我对java类库了解不够深入,我只想到将String转化为整型数据进行运算,下面是代码: public class test{ int year,month; String str1="20050909"; String str2="20100201"; public int seperateYear(String str){ return Integer.parseInt(str.substring(0,4)); //获取年份 } public int seperateMonth(String str){ return Integer.parseInt(str.substring(4,str.length()-2));//获取月份 } public static void main(String args[]){ test t=new test(); int yearSub=t.seperateYear(t.str1)-t.seperateYear(t.str2); //年份之差 int monthSub=t.seperateMonth(t.str1)-t.seperateMonth(t.str2);//月份之差 if(yearSub>=0&&monthSub>=0) System.out.println("两日期相差:"+yearSub+"年"+monthSub+"月"); if(yearSub<0&&monthSub>0) System.out.println("两日期相差:"+(Math.abs(yearSub)-1)+"年"+(12-monthSub)+"月"); if(yearSub>=0&&monthSub<0) System.out.println("两日期相差:"+(yearSub-1)+"年"+(12+monthSub)+"月"); if(yearSub<0&&monthSub<=0) System.out.println("两日期相差:"+(Math.abs(yearSub))+"年"+(Math.abs(monthSub))+"月"); } }
* 求月数差
*
* @param strDate1 日期1 yyyy/MM/dd
* @param strDate2 日期2 yyyy/MM/dd
* @return 月数差
* @throws ParseException 日期格式错误
*/
public static int differenceMonth(String strDate1, String strDate2)
throws ParseException {
Date date1 = DateFormat.getDateInstance().parse(strDate1);
Date date2 = DateFormat.getDateInstance().parse(strDate2);
return differenceMonth(date1,date2);
}public static int differenceMonth(Date date1, Date date2) {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
cal1.set(Calendar.DATE, 1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
cal2.set(Calendar.DATE, 1);
int count = 0;
if (cal1.before(cal2)) {
while (cal1.before(cal2)) {
cal1.add(Calendar.MONTH, 1);
count--;
}
} else {
count--;
while (!cal1.before(cal2)) {
cal1.add(Calendar.MONTH, -1);
count++;
}
}
return count;
}
java.text.SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String times1="2008-11-15 00:00:00";
Date dates=timeformat.parse(times1);
String times2="2008-11-22 00:00:00";
Date dates2=timeformat.parse(times2);
System.out.println(times2+" "+dates2.getTime());
long adf=dates2.getTime()-dates.getTime(); System.out.println(adf);
System.out.println(adf/604800000);
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
Date firstDate = firstDate = df.parse(data1);
Date secondDate = secondDate = df.parse(data2);
return secondDate.getMonth()-firstDate.getMonth()+12*(secondDate.getYear()-firstDate.getYear());我没处理异常啊。
import org.joda.time.format.*;DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");DateTime d1 = formatter.parseDateTime("20090909");
DateTime d2 = formatter.parseDateTime("20100101");Period p = new Period(d1,d2,PeriodType.months());PeriodFormat.getDefault().print(p); // 3 months
public class test{
int year,month;
String str1="20050909";
String str2="20100201";
public int seperateYear(String str){
return Integer.parseInt(str.substring(0,4)); //获取年份
}
public int seperateMonth(String str){
return Integer.parseInt(str.substring(4,str.length()-2));//获取月份
}
public static void main(String args[]){
test t=new test();
int yearSub=t.seperateYear(t.str1)-t.seperateYear(t.str2); //年份之差
int monthSub=t.seperateMonth(t.str1)-t.seperateMonth(t.str2);//月份之差
if(yearSub>=0&&monthSub>=0)
System.out.println("两日期相差:"+yearSub+"年"+monthSub+"月");
if(yearSub<0&&monthSub>0)
System.out.println("两日期相差:"+(Math.abs(yearSub)-1)+"年"+(12-monthSub)+"月");
if(yearSub>=0&&monthSub<0)
System.out.println("两日期相差:"+(yearSub-1)+"年"+(12+monthSub)+"月");
if(yearSub<0&&monthSub<=0)
System.out.println("两日期相差:"+(Math.abs(yearSub))+"年"+(Math.abs(monthSub))+"月");
}
}