String t1="2004/12/10"  
String t2="2005/12/12"

解决方案 »

  1.   

    SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd");
    Date d1 = format.parse(t1);
    Date d2 = format.parse(t2);Calendar c = Calendar.getInstance();
    c.setTime(d);
    c.get(Calendar.DAY_OF_YEAR);//获得日期是在一年中的第几天
    c.get(Calendar.YEAR);//获得年份
    c.get(Calnedar.MONTH);//获得月份根据上面的功能应该可以求解出你的问题了
      

  2.   

    引用自步惊云:import java.util.Date;
    import java.util.Calendar;
    import java.text.DateFormat;
    public class myDate{
    public static String dateFormat(Date d,int f)
    {String temp="";
     if (f==0) {temp=String.valueOf(d);}
     if (f==1) {temp=(1900+d.getYear())+"-"+(d.getMonth()+1)+"-"+d.getDate();}
     if (f==2) {temp=(1900+d.getYear())+"-"+(d.getMonth()+1);}
     if (f==3) {temp=(d.getMonth()+1)+"-"+d.getDate();}
     if (f==4) {temp=(1900+d.getYear())+"年"+(d.getMonth()+1)+"月";}
     if (f==5) {temp=(1900+d.getYear())+"-"+(d.getMonth()+1)+"-"+d.getDate()+"-"+d.getHours()+"-"+d.getMinutes()+"-"+d.getSeconds();}
     return temp;}
    public static Date getDateFormat(String str)
    {Date d=new Date();
     String[] arr=str.split("-");
     d.setYear(Integer.parseInt(arr[0])-1900);
     d.setMonth(Integer.parseInt(arr[1])-1);
     d.setDate(Integer.parseInt(arr[2]));
     return d;}
    public static int dateDiff(Date d1,Date d2,int f)
    {long diff=d2.getTime()-d1.getTime();
     diff=diff/1000/60/60/24;
     int rtn=0;
     if (f==0) rtn=(int)diff;
     if (f==1) rtn=(d2.getYear()*12+d2.getMonth())-(d1.getYear()*12+d1.getMonth());
     if (f==2) rtn=(d2.getYear()-d1.getYear());
     return rtn;
    }
    public static Date dateAdd(Date d,int x,int con)
    {if (con==0) d.setDate(d.getDate()+x);
     if (con==1) d.setMonth(d.getMonth()+x);
     if (con==2) d.setYear(d.getYear()+x);
     return d;
    }
    public static int getWeekOfDay(String str)
    {
      String[] arr=str.split("-");
      Date d=new Date(Integer.parseInt(arr[0])-1900,Integer.parseInt(arr[1])-1,Integer.parseInt(arr[2]));
      int temp=d.getDay();
      if (temp==0) temp=7;
      return temp;
    }
    public static int getDayOfMonth(int year,int month)
    {
      if (month==1||month==3||month==5||month==7||month==8||month==10||month==12) return 31;
      if (month==4||month==6||month==9||month==11) return 30;
      if (month==2)
      {
        if (year%400==0) return 29;
        if (year%100!=0&&year%4==0) return 29;
      }
      return 28;
    }
    public static void main(String[] args)
    {
    }
    }
    java没有vb中的dateDiff函数什么的,只能自己做库函数
    上面是我在实际开发中写的工具库,public static int dateDiff(Date d1,Date d2,int f)
    这个函数使用来算日期相减的,可以看到int f使用来传入时间单位的(0-日,1-月,2-年)
      

  3.   

    public static int dateDiff(String interval,java.util.Date date1, java.util.Date date2) {
    int intReturn=-1000000000 ;
    if (date1==null || date2==null || interval==null) return intReturn ;
    try {
    java.util.Calendar cal1 = java.util.Calendar.getInstance(); 
    java.util.Calendar cal2 = java.util.Calendar.getInstance();// different date might have different offset
    cal1.setTime(date1);          
    long ldate1 = date1.getTime() + cal1.get(java.util.Calendar.ZONE_OFFSET) + cal1.get(java.util.Calendar.DST_OFFSET);cal2.setTime(date2);
    long ldate2 = date2.getTime() + cal2.get(java.util.Calendar.ZONE_OFFSET) + cal2.get(java.util.Calendar.DST_OFFSET);// Use integer calculation, truncate the decimals
    int hr1   = (int)(ldate1/3600000);
    int hr2   = (int)(ldate2/3600000);int days1 = (int)hr1/24;
    int days2 = (int)hr2/24;int yearDiff  = cal2.get(java.util.Calendar.YEAR) - cal1.get(java.util.Calendar.YEAR); 
    int monthDiff = yearDiff * 12 + cal2.get(java.util.Calendar.MONTH) - cal1.get(java.util.Calendar.MONTH);
    int dateDiff  = days2 - days1;
    int hourDiff  = hr2 - hr1;
    int minuteDiff  =  (int)(ldate2/60000) - (int)(ldate1/60000);
    int secondDiff  =  (int)(ldate2/1000) - (int)(ldate1/1000);if (interval.equals("Y")){
    intReturn = yearDiff;
    }
    else if (interval.equals("M")){
    intReturn = monthDiff;
    }
    else if (interval.equals("D")){
    intReturn = dateDiff;
    }
    else if (interval.equals("H")){
    intReturn = hourDiff;
    }
    else if (interval.equals("m")){
    intReturn = minuteDiff;
    }
    else if (interval.equals("S")){
    intReturn = secondDiff;
    }
    }
    catch (Exception ex) {
    }
    return intReturn;
    }