我想取得指定日期前一天的日期,程序如下,问题是输入日期是“20090101”,但程序取得的前一天日期却是“20091231”,应该是“20081231”,这是为什么,请各位大虾帮帮忙啊!!! /**
* main方法
*/
public static void main(String[] args) {
String strDate = "20090101";
Date date = cnvDate(strDate);
java.util.Calendar calendar11=java.util.Calendar.getInstance();
calendar11.setTime(date);
calendar11.roll(java.util.Calendar.DAY_OF_YEAR, -1);
Date aa = calendar11.getTime();
String idoYmdStr3 = dateToString(aa);
System.out.println(idoYmdStr3);
} /**
* 将指定日期由String型转换成Date型
*/
private Date cnvDate(String sData) {
Date resDate;
SimpleDateFormat sdf = (SimpleDateFormat) SimpleDateFormat.getDateInstance();
sdf.setLenient(true);
sdf.applyPattern("yyyyMMdd");
resDate = sdf.parse(sData); return resDate;
} /**
* 将指定日期由Date型转换成String型
*/
private String dateToString(Date sData) {
String strDate = null;
if (sData != null) {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
strDate = dateFormat.format(sData);
} catch (Exception ex) {
strDate = null;
}
}
return strDate;
}
* main方法
*/
public static void main(String[] args) {
String strDate = "20090101";
Date date = cnvDate(strDate);
java.util.Calendar calendar11=java.util.Calendar.getInstance();
calendar11.setTime(date);
calendar11.roll(java.util.Calendar.DAY_OF_YEAR, -1);
Date aa = calendar11.getTime();
String idoYmdStr3 = dateToString(aa);
System.out.println(idoYmdStr3);
} /**
* 将指定日期由String型转换成Date型
*/
private Date cnvDate(String sData) {
Date resDate;
SimpleDateFormat sdf = (SimpleDateFormat) SimpleDateFormat.getDateInstance();
sdf.setLenient(true);
sdf.applyPattern("yyyyMMdd");
resDate = sdf.parse(sData); return resDate;
} /**
* 将指定日期由Date型转换成String型
*/
private String dateToString(Date sData) {
String strDate = null;
if (sData != null) {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
strDate = dateFormat.format(sData);
} catch (Exception ex) {
strDate = null;
}
}
return strDate;
}
使用add方法吧.
calendar11.add(Calendar.DAY_OF_MONTH, -1);
Date d1 = format.parse("20090101");
Date d2 = new Date(d1.getTime()-24*60*60*1000L);