Date d1,d2;
Calendar cal1=new GregorianCalendar();
cal1.setTime(d1);
Calendar cal2=new GregorianCalendar();
cal2.setTime(d2);
int k=cal1.get(Calendar.YEAR)*12+cal1.get(Calendar.MONTH)-cal1.get(Calendar.YEAR)*12-cal1.get(Calendar.MONTH);
//两个时间差多少个月
Calendar cal1=new GregorianCalendar();
cal1.setTime(d1);
Calendar cal2=new GregorianCalendar();
cal2.setTime(d2);
int k=cal1.get(Calendar.YEAR)*12+cal1.get(Calendar.MONTH)-cal1.get(Calendar.YEAR)*12-cal1.get(Calendar.MONTH);
//两个时间差多少个月
int k=cal1.get(Calendar.YEAR)*12+cal1.get(Calendar.MONTH)-cal2.get(Calendar.YEAR)*12-cal2.get(Calendar.MONTH);
Date d=new Date();
calendar.setTime(d);
String theyear=Integer.toString(calendar.get(Calendar.YEAR));
String themonth=myconvert(Integer.toString(calendar.get(Calendar.MONTH)+1));
String theday=myconvert(Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
String thehour=myconvert(Integer.toString(calendar.get(Calendar.HOUR_OF_DAY)));
String theminute=myconvert(Integer.toString(calendar.get(Calendar.MINUTE)));
String thesecond=myconvert(Integer.toString(calendar.get(Calendar.SECOND)));
String stoday=theyear+themonth+theday+"-"+thehour+theminute+thesecond;
来源:http://search.csdn.net/Expert/topic/2492/2492629.xml?temp=.3503229我丢人啊,我不活啦。这么EASY的问题居然连贴俩贴都有虫虫。我可是三天学完JAVA,还懂.jar的啊。昨日按SQLSERVER 的 dateDiff() 测试了一下代码,修正了大大小小一堆bug。最终版本如下。当当当当,隆重推出 dateDiff()。/*
* @(#)DateDiff.java 1.00 11/26/2003
*
*/
import java.util.Calendar;
/**
*
*
* Copyright 2003 Wobelisk. All rights reserved.
* Free Use. No response for damage caused by errors of this file.
* <p>
* dateDiff() function similar to ms sqlserver. Calculate difference between two
* Calendars. Difference can be represented by day,week,hour,minute and second.
*
* <p>
* The difference between "2003-11-22 23:59:59" and "2003-11-23 00:00:00" is
* 1 day, or 1 week, or 1 hour, or 1 minute or 1 second
* <p>
* Default week difference is based on the rule that Sunday as the first day of
* the week. In France or China where Monday is the first day of week, you
* should set the first day of week to Monday before calculation. For Example,
* <pre>
* Calendar c1=Calendar.getInstance();
* Calendar c2=Calendar.getInstance();
* c1.set(2003,10,23,23,0,0); //Sunday 2003-11-23 23:00:00
* c2.set(2003,10,24,1,0,0); //Monday 2003-11-24 01:00:00
* dateDiff("week",c1,c2); //week difference between c1 and c2 is 0 week
* c1.setFirstDayOfWeek(Calendar.MONDAY);
* c2.setFirstDayOfWeek(Calendar.MONDAY);
* dateDiff("week",c1,c2); //week difference between c1 and c2 is 1 week
* </pre>
*
* setFirstDayOfWeek() only affects week difference
*
* @author [email protected]
* @version 1.00 11/26/2003
*
*/
public class DateDiff{
/**
* Calculate Calendar c2 - Calendar c1
* @param s the String represents type of difference: day, week, hour,
* minute, second. String is case-insensitive
* @param c1 the Calendar instance
* @param c2 the Calendar instance
*/ public static long dateDiff(String s,Calendar c1, Calendar c2){
String s1=s.toUpperCase();
if(s1.equals("DAY")){
Calendar c11=Calendar.getInstance();
Calendar c21=Calendar.getInstance();
c11.set(c1.get(Calendar.YEAR),c1.get(Calendar.MONTH),c1.get(Calendar.DAY_OF_MONTH),0,0,0);
c21.set(c2.get(Calendar.YEAR),c2.get(Calendar.MONTH),c2.get(Calendar.DAY_OF_MONTH),0,0,0);
return (c21.getTimeInMillis()-c11.getTimeInMillis())/(1000*24*3600);
} else if(s1.equals("WEEK")){
long base=dateDiff("DAY",c1,c2);
int dw1=c1.get(Calendar.DAY_OF_WEEK);
int dw2=c2.get(Calendar.DAY_OF_WEEK);
if(c1.getFirstDayOfWeek()==Calendar.MONDAY && dw1==Calendar.SUNDAY)
dw1+=7;
if(c2.getFirstDayOfWeek()==Calendar.MONDAY && dw2==Calendar.SUNDAY)
dw2+=7;
if(base>0 && dw2<dw1)
return base/7+1;
else if(base<0 && dw2>dw1)
return base/7-1;
else
return base/7;
} else if(s1.equals("HOUR")){
return dateDiff("DAY",c1,c2)*24+c2.get(Calendar.HOUR_OF_DAY)-c1.get(Calendar.HOUR_OF_DAY);
} else if(s1.equals("MINUTE")){
return dateDiff("HOUR",c1,c2)*60+c2.get(Calendar.MINUTE)-c1.get (Calendar.MINUTE);
} else if(s1.equals("SECOND")){
return dateDiff("MINUTE",c1,c2)*60+c2.get(Calendar.SECOND)-c1.get(Calendar.SECOND);
} else
return Long.MIN_VALUE; //error
}
}
flyxxxxx(灭神) ( )
我觉得你的方法不正确!你没有考虑过"2004-1-2" 和"2005-1-1"实际上只有11个月,而不是12个月,你明白我的意思没有!!!
大家再好好想想!!
java.util.Date d1 = df.parse("2004-1-2");
java.util.Date d2 = df.parse("2005-1-1");java.util.GregorianCalendar cal1=new java.util.GregorianCalendar();
cal1.setTime(d1);
java.util.GregorianCalendar cal2=new java.util.GregorianCalendar();
cal2.setTime(d2);
int k=(cal2.get(java.util.Calendar.YEAR)-cal1.get(java.util.Calendar.YEAR))*12+cal2.get(java.util.Calendar.MONTH)-cal1.get(java.util.Calendar.MONTH);
int mod = cal2.get(java.util.Calendar.DATE)-cal1.get(java.util.Calendar.DATE);
k+=(mod>0?1:(mod<0?-1:0));
System.out.println(k);
java.util.Date d1 = df.parse("2004-1-2");
java.util.Date d2 = df.parse("2005-1-4");
试试看,就知道了!!!请问,是不是我太专牛角了!好象如果要考虑天的话,很难算出来是不是各位?!!
java.util.Date d1 = df.parse("2004-1-2");
java.util.Date d2 = df.parse("2005-1-1");java.util.GregorianCalendar cal1=new java.util.GregorianCalendar();
cal1.setTime(d1);
java.util.GregorianCalendar cal2=new java.util.GregorianCalendar();
cal2.setTime(d2);
int k=(cal2.get(java.util.Calendar.YEAR)-cal1.get(java.util.Calendar.YEAR))*12+cal2.get(java.util.Calendar.MONTH)-cal1.get(java.util.Calendar.MONTH);
int mod = cal2.get(java.util.Calendar.DATE)-cal1.get(java.util.Calendar.DATE);
k+=(mod>=0?0:-1);
System.out.println(k);