在JAVA 中 要实现两个日期相减 算出相差的天数 怎么实现  用DATE类 还是Calendar类

解决方案 »

  1.   

    Date类好多东西都不建议使用了,用Calendar几乎可以满足你日期和时间方面的所有要求
      

  2.   

    //下面写的烦琐,而且输入非法日期回抛异常。
    import java.util.*;
    import java.text.*;
    public class Test {
    public Test(){

    }
    public static void main(String[] args){

    Test t=new Test();
    Date date1=Test.fromDateString("2005-12-20","yyyy-MM-dd");
    Date date2=Test.fromDateString("2005-12-25","yyyy-MM-dd");
    System.out.println(t.getDiffdays(date2,date1));


    } public long getDiffdays(Date date1,Date date2){
    Calendar cal1=new GregorianCalendar(date1.getYear(),date1.getMonth(),date1.getDate());
    Calendar cal2=new GregorianCalendar(date2.getYear(),date2.getMonth(),date2.getDate());
    return getDiffdays(cal1,cal2);
    } public long getDiffdays(Calendar cal1,Calendar cal2){

    long diffMills=cal1.getTimeInMillis()-cal2.getTimeInMillis();
    long diffDays=diffMills/(24*60*60*1000);
        return diffDays;
    } public static Date fromDateString(String dateString, String fromFormat)
        {
            GregorianCalendar gc = new GregorianCalendar();
            SimpleDateFormat df = new SimpleDateFormat(fromFormat);
            df.setTimeZone(gc.getTimeZone());
            df.setLenient(false);
            Date date = df.parse(dateString, new ParsePosition(0));
            return date;
        }
    }
      

  3.   

    //格式整理一下import java.util.*;
    import java.text.*;
    public class Test {
    public Test(){

    }
    public static void main(String[] args){

    Test t=new Test();
    Date date1=Test.fromDateString("2005-12-20","yyyy-MM-dd");
    Date date2=Test.fromDateString("2005-12-25","yyyy-MM-dd");
    System.out.println(t.getDiffdays(date2,date1));


    } public long getDiffdays(Date date1,Date date2){
    Calendar cal1=new GregorianCalendar(date1.getYear(),
    date1.getMonth(),date1.getDate());

    Calendar cal2=new GregorianCalendar(date2.getYear(),
    date2.getMonth(),date2.getDate());

    return getDiffdays(cal1,cal2);
    } public long getDiffdays(Calendar cal1,Calendar cal2){

    long diffMills=cal1.getTimeInMillis()-cal2.getTimeInMillis();
    long diffDays=diffMills/(24*60*60*1000);
        return diffDays;
    } public static Date fromDateString(String dateString, String fromFormat)
        {
            GregorianCalendar gc = new GregorianCalendar();
            SimpleDateFormat df = new SimpleDateFormat(fromFormat);
            df.setTimeZone(gc.getTimeZone());
            df.setLenient(false);
            Date date = df.parse(dateString, new ParsePosition(0));
            return date;
        }
    }
      

  4.   

    另外我给出一个:import java.util.GregorianCalendar;public class DayOfNum
    {
    public DayOfNum()
    {
    GregorianCalendar c1 = new GregorianCalendar(1983,2,18,15,00,00);
    GregorianCalendar c2 = new GregorianCalendar(2005,11,16,00,00);
    double timeLong=c2.getTimeInMillis()-c1.getTimeInMillis();
    float yearNum=(float)((((timeLong/1000)/3600)/24)/365);
    int dayNum=(int)(((timeLong/1000)/3600)/24);
    System.out.println("你指定的两个时间点之间的天数是:"+dayNum);
    System.out.println("你指定的两个时间点之间的年数是:"+yearNum);
    }
    public static void main(String[] args)
    {
    new DayOfNum();
    }
    }
    关于你自己要计算的两个日期,在代码中些写出来,就可以了j2sdk 1.4编译通过,运行无误嘿嘿,兄弟,给点分吧??
      

  5.   

    mofengtt(漠风) 
    float yearNum=(float)((((timeLong/1000)/3600)/24)/365);
    忽略了瑞年哦
      

  6.   

    我总结一下,
    就是用JAVA的API 把日期录入,转化成毫秒作差。结果转化成天数。