年光机(java 日期 往前数 往后数)
时光机(java 日期 往前数 往后数)
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; } }