1第一种

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

 

public class Test {

 

    public static void main(String[] args) {

        try {

            //时间转换类

            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

            Date date1 = sdf.parse("2014-1-10");

            Date date2 = sdf.parse("2012-12-20");

            //将转换的两个时间对象转换成Calendard对象

            Calendar can1 = Calendar.getInstance();

            can1.setTime(date1);

            Calendar can2 = Calendar.getInstance();

            can2.setTime(date2);

            //拿出两个年份

            int year1 = can1.get(Calendar.YEAR);

            int year2 = can2.get(Calendar.YEAR);

            //天数

            int days = 0;

            Calendar can = null;

            //如果can1 < can2

            //减去小的时间在这一年已经过了的天数

            //加上大的时间已过的天数

            if(can1.before(can2)){

                days -= can1.get(Calendar.DAY_OF_YEAR);

                days += can2.get(Calendar.DAY_OF_YEAR);

                can = can1;

            }else{

                days -= can2.get(Calendar.DAY_OF_YEAR);

                days += can1.get(Calendar.DAY_OF_YEAR);

                can = can2;

            }

            for (int i = 0; i < Math.abs(year2-year1); i++) {

                //获取小的时间当前年的总天数

                days += can.getActualMaximum(Calendar.DAY_OF_YEAR);

                //再计算下一年。

                can.add(Calendar.YEAR, 1);

            }

            System.out.println("天数差:"+days);

        } catch (ParseException e) {

            e.printStackTrace();

        }

    }

}

 

Console:

天数差:386



2第二种  



首先把获取的字符串日期转换成Date类型(从前台页面获取的是字符串类型的日期 a,b):

Date a1 = new SimpleDateFormat("yyyy-MM-dd").parse(a);

Date b1 = new SimpleDateFormat("yyyy-MM-dd").parse(b);

//获取相减后天数

long day = (a1.getTime()-b1.getTime())/(24*60*60*1000);

希望可以帮到你。



第三种  



相隔的天数

Date d1 = new Date();

Date d2 = new Date(2013,10,23,14,15,26);


int days = (int)((d1.getTime() - d2.getTime())/86400000);


System.out.println("间隔天数:"  + days);





第三种方式转化的时候出了点问题  希望谁能帮我改进下,第一和第二都可以转换  但要注意第二种时间算出的天数需要自己去区分时间的大小,否则会算出负数。