请问Java如何得到七天以前的日期

请用Java编写一段程序打印输出当前日期减去7天的日期,格式为1-31-1900。

常规写法是下面这样写的。
我们在获得指定时间倒退或者延迟天数的时候,
JAVA 建议使用 Calendar 这个对象来处理。

下面是我写的类 和 测试方法 :
-----------------
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTest {

/**
* 请用Java编写一段程序打印输出当前日期减去7天的日期,格式为1-31-1900。
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
DateTest dateTest = new DateTest();

DateFormat df = new SimpleDateFormat("MM-dd-yyyy");

//假象一个指定时间 1999年1月31日
Date before7Day = dateTest.getDate("1-31-1999", 7);

System.out.println("获得的新的时间是 : "+df.format(before7Day));

}

/**
* 根据输入的日期字符串 和 提前天数 ,
* 获得 指定日期提前几天的日期对象
* @param dateString 日期对象 ,格式如 1-31-1900
* @param lazyDays 倒推的天数
* @return 指定日期倒推指定天数后的日期对象
* @throws ParseException
*/
public Date getDate(String dateString , int beforeDays) throws ParseException{

DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
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();
}

}

-----------------

输出结果是 :
获得的新的时间是 : 01-24-1999
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-17
//做事不可误人,正解:A.java

import java.text.SimpleDateFormat;

public class A {
//从楼主题意可知,楼上几位的格式化字符串有点问题,细节问题,就是当日期或月份为单数时,
//输出的格式化后的字符串将会加前导‘0’,如:1-31-1999会变成:01-31-1999
private static final SimpleDateFormat df = new SimpleDateFormat("M-d-yyyy");
//用Calendar类来处理是没错的,但这里我用别的方法,就是减去或增加一天的毫秒数来实现天数的偏移。
private static final long dayMS=24*60*60*1000;

public static void main(String[] args) {
String str = getFormattedDate(-7);
System.out.println(str);
}

/**返回格式化后的当天日期字符串。*/
public static String getTodayFormattedDate(){
return getFormattedDate(0);
}

/**@param offsetDays
* 指定日期与当天的偏移量,单位为天。<br/>
* 返回格式化后的日期字符串。
* */
public static String getFormattedDate(int offsetDays){
long off=System.currentTimeMillis()+offsetDays*dayMS;
return df.format(new java.util.Date(off));
}
}
第2个回答  2017-01-03
//获取7天以前时间
String str = "";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.roll(Calendar.DATE, -7);//日期回滚7天
str=sdf.format(lastDate.getTime());
System.out.println(str);

第3个回答  2009-10-17
还真没注意,他这个年份放后面了

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class date {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(c.DAY_OF_YEAR, -7);
System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(c.getTime()));

}

}
第4个回答  2009-10-17
从实际的角度来讲,以七天为一个周期,长短也比较合适。所 以尽管中国的传统工作周期是十天(比如王勃... 期六,七天之后的5月8日也是星期六。在日期上,8-1=7,正是7的倍数。同样,5月15 日、5月22日和5月29日...
相似回答