package com.yao;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateTest {
public static void main(String[] args) throws ParseException {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
//假定今天的日期是"2012-12-21"
String strDate = "2012-12-21";
//穿越到一年前
Date beforeDays = getBeforeDate(strDate,365);
String beforeDaysString = formatter.format(beforeDays);
System.out.println("一年前的日期:"+beforeDaysString);
//穿越到一天后
Date Afterdate = getAfterDate(strDate,1);
String afterDateString = formatter.format(Afterdate);
System.out.println("一天以后的日期:"+afterDateString);
}
/**
* 根据输入的日期字符串 和 提前天数 ,
* 获得 指定日期提前几天的日期对象
* @param dateString 日期对象 ,格式如 2012-11-22
* @param beforeDays 倒推的天数
* @return 指定日期倒推指定天数后的日期对象
* @throws ParseException
* @throws java.text.ParseException
*/
public static Date getBeforeDate(String dateString , int beforeDays) throws ParseException, java.text.ParseException{
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date inputDate = dateFormat.parse(dateString);
Calendar cal = Calendar.getInstance();
cal.setTime(inputDate);
int inputDayOfYear = cal.get(Calendar.DAY_OF_YEAR);
cal.set(Calendar.DAY_OF_YEAR , inputDayOfYear-beforeDays );
return cal.getTime();
}
/**
* 根据输入的日期字符串 和 往后天数 ,
* 获得 指定日期提前几天的日期对象
* @param dateString 日期对象 ,格式如 2012-12-21
* @param afterDate 往后的天数
* @return 指定日期往后指定天数后的日期对象
* @throws ParseException
*/
public static Date getAfterDate(String dateString,int afterDate) throws ParseException{
DateFormat dateFororma = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFororma.parse(dateString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(calendar.DATE,afterDate);
date = calendar.getTime();
return date;
}
}