您的位置:首页 > 其它

获取指定某一天的前一个月或前一年日期的方法

2011-06-13 16:04 435 查看
例如,指定日期为2010-03-31
前一个月的日期:2010-02-28
前两个月的日期:2010-01-31
前一年的日期:2009-03-31

通过什么方法可以实现?

import java.util.Calendar;
public class TestGetLastMonth {
/**
* 获取指定月的前一月(年)或后一月(年)
* @param dateStr
* @param addYear
* @param addMonth
* @param addDate
* @return 输入的时期格式为yyyy-MM,输出的日期格式为yyyy-MM
* @throws Exception
*/
public static String getLastMonth(String dateStr,int addYear, int addMonth, int addDate) throws Exception {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM");
java.util.Date sourceDate = sdf.parse(dateStr);
Calendar cal = Calendar.getInstance();
cal.setTime(sourceDate);
cal.add(Calendar.YEAR,addYear);
cal.add(Calendar.MONTH, addMonth);
cal.add(Calendar.DATE, addDate);

java.text.SimpleDateFormat returnSdf = new java.text.SimpleDateFormat("yyyy-MM");
String dateTmp = returnSdf.format(cal.getTime());
java.util.Date returnDate = returnSdf.parse(dateTmp);
return dateTmp;
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e.getMessage());
}
}

/**
* 获取指定月的前一月(年)或后一月(年)
* @param dateStr
* @param addYear
* @param addMonth
* @param addDate
* @return 输入的时期格式为yyyy-MM-dd,输出的日期格式为yyyy-MM-dd
* @throws Exception
*/
public static String getLastDay(String dateStr,int addYear, int addMonth, int addDate) throws Exception {
try {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
java.util.Date sourceDate = sdf.parse(dateStr);
Calendar cal = Calendar.getInstance();
cal.setTime(sourceDate);
cal.add(Calendar.YEAR,addYear);
cal.add(Calendar.MONTH, addMonth);
cal.add(Calendar.DATE, addDate);

java.text.SimpleDateFormat returnSdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
String dateTmp = returnSdf.format(cal.getTime());
java.util.Date returnDate = returnSdf.parse(dateTmp);
return dateTmp;
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e.getMessage());
}
}

/**
* 测试
* @param args
*/
public static void main(String[] args) {
try{
System.out.println(TestGetLastMonth.getLastMonth("2011-06",0,-1,0));//2011-05
System.out.println(TestGetLastMonth.getLastMonth("2011-06",0,-6,0));//2010-12
System.out.println(TestGetLastMonth.getLastMonth("2011-06",-1,0,0));//2010-06
}catch (Exception e) {

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: