1 import java.util.Calendar;
2 public class TestGetLastMonth {
3 /**
4 * 获取指定月的前一月(年)或后一月(年)
5 * @param dateStr
6 * @param addYear
7 * @param addMonth
8 * @param addDate
9 * @return 输入的时期格式为yyyy-MM,输出的日期格式为yyyy-MM
10 * @throws Exception
11 */
12 public static String getLastMonth(String dateStr,int addYear, int addMonth, int addDate) throws Exception {
13 try {
14 java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM");
15 java.util.Date sourceDate = sdf.parse(dateStr);
16 Calendar cal = Calendar.getInstance();
17 cal.setTime(sourceDate);
18 cal.add(Calendar.YEAR,addYear);
19 cal.add(Calendar.MONTH, addMonth);
20 cal.add(Calendar.DATE, addDate);
21
22 java.text.SimpleDateFormat returnSdf = new java.text.SimpleDateFormat("yyyy-MM");
23 String dateTmp = returnSdf.format(cal.getTime());
24 java.util.Date returnDate = returnSdf.parse(dateTmp);
25 return dateTmp;
26 } catch (Exception e) {
27 e.printStackTrace();
28 throw new Exception(e.getMessage());
29 }
30 }
31
32 /**
33 * 获取指定月的前一月(年)或后一月(年)
34 * @param dateStr
35 * @param addYear
36 * @param addMonth
37 * @param addDate
38 * @return 输入的时期格式为yyyy-MM-dd,输出的日期格式为yyyy-MM-dd
39 * @throws Exception
40 */
41 public static String getLastDay(String dateStr,int addYear, int addMonth, int addDate) throws Exception {
42 try {
43 java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
44 java.util.Date sourceDate = sdf.parse(dateStr);
45 Calendar cal = Calendar.getInstance();
46 cal.setTime(sourceDate);
47 cal.add(Calendar.YEAR,addYear);
48 cal.add(Calendar.MONTH, addMonth);
49 cal.add(Calendar.DATE, addDate);
50
51 java.text.SimpleDateFormat returnSdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
52 String dateTmp = returnSdf.format(cal.getTime());
53 java.util.Date returnDate = returnSdf.parse(dateTmp);
54 return dateTmp;
55 } catch (Exception e) {
56 e.printStackTrace();
57 throw new Exception(e.getMessage());
58 }
59 }
60
61 /**
62 * 测试
63 * @param args
64 */
65 public static void main(String[] args) {
66 try{
67 System.out.println(TestGetLastMonth.getLastMonth("2011-06",0,-1,0));//2011-05
68 System.out.println(TestGetLastMonth.getLastMonth("2011-06",0,-6,0));//2010-12
69 System.out.println(TestGetLastMonth.getLastMonth("2011-06",-1,0,0));//2010-06
70 }catch (Exception e) {
71
72 }
73
74 }
75 }