日期:2014-05-20  浏览次数:20805 次

Java Date类型 减一个月怎么做?
                String startDateStr = "" ;
String endDateStr = "" ;
TimeZone tzES2 = TimeZone.getTimeZone("GMT+8");
Calendar calES2 = Calendar.getInstance(tzES2);
Calendar ca = Calendar.getInstance();
Date now = ca.getTime();
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd" ) ;
dateFormat.setCalendar(calES2) ;
String s = dateFormat.format(now) ;//2013/01/03
String[] sp = s.split("/") ; // 2013 01 03
sp[sp.length-1] = "01" ;
System.out.println(Integer.parseInt(sp[1]));
startDateStr =  sp[0] + "/" + sp[1] + "/" + sp[2] ;
List list = new ArrayList() ;
sp[sp.length-1] = "31" ;
endDateStr = sp[0]  + "/" + sp[1]  + "/" + sp[2];
System.out.println(endDateStr);

我这段程序可以获取到 当月 1号到 31号 的数据   就是 2013年1月1日 到2013年1月31日
如果修改它的月份,让它能指向上一个月的呢。就是 2012年12月1日 到 2012年12月31日
最好有代码解释。谢谢各位!
java date calendar string timezone

------解决方案--------------------

public static void main(String[] args) {
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
c.set(Calendar.YEAR, 2013);
c.set(Calendar.MONTH, 1);
c.set(Calendar.DATE, 3);
c.add(Calendar.MONTH, -2);
System.out.println(sdf.format(c.getTime()));
}

------解决方案--------------------
		String startDateStr = "";
String endDateStr = "";
TimeZone tzES2 = TimeZone.getTimeZone("GMT+8");
Calendar calES2 = Calendar.getInstance(tzES2);
Calendar ca = Calendar.getInstance();
Date now = ca.getTime();
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
dateFormat.setCalendar(calES2);

ca.set(Calendar.DATE, ca.getActualMinimum(Calendar.DAY_OF_MONTH));//设置当前日期为当前月的第一天
now = ca.getTime();
startDateStr = dateFormat.format(now);

ca.set(Calendar.DATE, ca.getActualMaximum(Calendar.DAY_OF_MONTH));//设置当前日期为当前月的最后一天
now = ca.getTime();
endDateStr = dateFormat.format(now);

System.out.println(startDateStr);
System.out.println(endDateStr);

ca.add(Calendar.MONTH, -1);//设置日期为当前日期加上-1个月(即减去1个月)的日期。后面的操作同上