1. 程式人生 > >java根據當前日期+指定天數(月份...)得到相應日期,計算兩日期之差

java根據當前日期+指定天數(月份...)得到相應日期,計算兩日期之差

package com.utcsoft.pcapps.selfservice.controller;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Test {

	/**
	 * @param args
	 */
	
	/**
	 * 此函式實現:給定日期和經過天數,算出結果日期
	 *@author 劉鵬
		其中sDate為指定日期,iDate為多少時間段(可以是 年、月、日...  具體根據iCal來確定)
		iCal為某種時間段例如  月:Calendar.MONTH(具體可查詢api中Calendar類)
		sStr為日期格式 例如:"yyyyMMdd"(具體可查詢api中Calendar類)
	 * @param sDate
	 * @param iDate
	 * @param iCal
	 * @param sStr
	 * @return
	 */
	public String getNextDate(String sDate, int iDate,int iCal, String sStr){
        String sNextDate = "";
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat formatter = new SimpleDateFormat(sStr);
        Date date = null;
        try {
            date = formatter.parse(sDate);
        } catch (ParseException e) {
        	e.printStackTrace();
        }
        calendar.setTime(date);
        calendar.add(iCal, iDate);
        sNextDate = formatter.format(calendar.getTime());
        return sNextDate ;
    }
	
	/**
	 * 返回兩個日期之間相差幾天
	 * @author 劉鵬
	 * @param fDate
	 * @param oDate
	 * @return
	 */
	public static int daysOfTwo(Date fDate, Date oDate) {

	       Calendar aCalendar = Calendar.getInstance();

	       aCalendar.setTime(fDate);

	       int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);

	       aCalendar.setTime(oDate);

	       int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);

	       return day2 - day1;

	    }
	
	public static void main(String[] args) throws ParseException {
		Test test = new Test();
		String a = test.getNextDate("2014-12-31", 1, Calendar.DATE, "yyyy-MM-dd");
		System.out.println(a);
		
		String str1 = "2013-08-11";
		String str2 = "2013-08-15";
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		Date d1 = simpleDateFormat.parse(str1);
		Date d2 = simpleDateFormat.parse(str2);
		int day = daysOfTwo(d1, d2);
		System.out.println(day);
	}
}