1.计算时间差
               
                DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义时间格式
                Date d1 = df.parse("2012-01-12 23:23:23");//最后时间
                Date d2 = df.parse("2012-01-11 23:23:23");//起始时间
                long diff = d1.getTime() - d2.getTime();//算出两个时间的秒数差
                long days = diff / (1000 * 60 * 60 * 24);//算出两个时间的天树差

 

//还有一种计算两个时间差的方式(通常用于处理过期问题)如下:
public class TestCompTime {

    //比较两个时间相差有没有过1天
    public static void main(String args[]) {
        Date date = StringForDate("20120529111111", "yyyyMMddHHssmm");
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        c.add(Calendar.DATE, 2);//规定两时刻相差天数
        System.out.println(c.getTime().compareTo(new Date()));//若在此天数内则返回1否则返回-1
    }
   
    /**
     * 根据指定格式将字符串转日期
     *
     * @return
     */
    public static Date StringForDate(String source, String pattern) {

        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.applyPattern(pattern);
        Date date = null;
        try {
            date = sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}

/**
     * 比较两个时间差,返回的是个大于等于或小于零的结果,表示两时间谁大
     * @param data1
     * @param data2
     * @return 返回 c1.compareTo(c2)的值;=0 两时间相等;<0 data1<data2;>0 data1>data2
     */
    public static int compareTime(String data1, String data2) {
        java.text.DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        java.util.Calendar c1=java.util.Calendar.getInstance();
        java.util.Calendar c2=java.util.Calendar.getInstance();
        try
        {
        c1.setTime(df.parse(data1));
        c2.setTime(df.parse(data2));
        }catch(java.text.ParseException e){
        System.err.println("日期格式错误");
        }
        return c1.compareTo(c2);
    }

/---------------------------**************-------------------------/
    // 默认格式化日期
    private static String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    // 默认字符编码
    private static String ENCODING = "utf-8";
   
    /**
     * 使用系统默认配置格式化日期
     *
     * @param date
     * @return
     */
    public static String dateFormatString(Date date) {
        return dateFormatString(date, DEFAULT_DATETIME_FORMAT);
    }

    /**
     * 根据指定格式格式化日期
     *
     * @param date
     * @param format
     * @return
     */
    public static String dateFormatString(Date date, String pattern) {

        if (null == date) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.applyPattern(pattern);
        return sdf.format(date);
    }

    /**
     * 使用系统默认配置将字符串转日期
     *
     * @return
     */
    public static Date StringForDate(String source) {
        return StringForDate(source, DEFAULT_DATETIME_FORMAT);
    }
 
    /**
     * 根据指定格式将字符串转日期
     *
     * @return
     */
    public static Date StringForDate(String source, String pattern) {

        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.applyPattern(pattern);
        Date date = null;
        try {
            date = sdf.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
 

/**

* 计算两日期间的天数差

* @param smdate

* @param bdate

* @return

* @throws Exception

*/

public static int daysBetween(Date smdate,Date bdate) throws Exception    

    {    

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

        smdate=sdf.parse(sdf.format(smdate));  

        bdate=sdf.parse(sdf.format(bdate));  

        Calendar cal = Calendar.getInstance();    

        cal.setTime(smdate);    

        long time1 = cal.getTimeInMillis();       

        cal.setTime(bdate);    

        long time2 = cal.getTimeInMillis();         

        long between_days=(time2-time1)/(1000*3600*24);  

       return Integer.parseInt(String.valueOf(between_days));           

    }



/**

* 计算两个日期之间的日期集合

* @param dBegin

* @param dEnd

* @return

* @throws ParseException 

*/

public static List<Date> findDates(String start, String end) throws ParseException

{

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

 Date dBegin = sdf.parse(start);

 Date dEnd = sdf.parse(end);

 List<Date> lDate = new ArrayList<Date>();

 lDate.add(dBegin);

 Calendar calBegin = Calendar.getInstance();

 // 使用给定的 Date 设置此 Calendar 的时间

 calBegin.setTime(dBegin);

 Calendar calEnd = Calendar.getInstance();

 // 使用给定的 Date 设置此 Calendar 的时间

 calEnd.setTime(dEnd);

 // 测试此日期是否在指定日期之后

 while (dEnd.after(calBegin.getTime()))

 {

  // 根据日历的规则,为给定的日历字段添加或减去指定的时间量

  calBegin.add(Calendar.DAY_OF_MONTH, 1);

  lDate.add(calBegin.getTime());

 }

 lDate.remove(0);//移除收尾两个日期

      if(lDate.size()>0) {

  lDate.remove(lDate.size()-1);

      }

 return lDate;

}