如何从java中的当前日期提前7天获取日期

我在用

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); Date date = new Date(); String fromdate = dateFormat.format(date); 

要获取当前日期,我如何才能获得7天的日期。 例如,如果今天是2013年6月7日,我怎样才能获得2013年5月31日的格式,与日期格式化程序中定义的格式相同。

得到了解决方案..谢谢大家:)

 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); Date date = new Date(); String todate = dateFormat.format(date); Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -7); Date todate1 = cal.getTime(); String fromdate = dateFormat.format(todate1); 

您可以使用Calendar类:

 Calendar cal = Calendar.getInstance() cal.add(Calendar.DATE, -7); System.out.println("Date = "+ cal.getTime()); 

但正如@Sean Patrick Floyd所说, Joda-time是Date最好的Java库。

或者使用JodaTime :

 DateTime lastWeek = new DateTime().minusDays(7); 

您可以使用此选项继续使用Date类型和更易读的代码,如果您喜欢:

 import org.apache.commons.lang.time.DateUtils; ... Date yourDate = DateUtils.addDays(new Date(), *days here*); 

Java现在有一个非常好的内置日期库, java.time与Java 8捆绑在一起。

 import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Foo { public static void main(String[] args) { DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'"); LocalDateTime now = LocalDateTime.now(); LocalDateTime then = now.minusDays(7); System.out.println(String.format( "Now: %s\nThen: %s", now.format(format), then.format(format) )); /* Example output: Now: 2014-05-09T14:51:48Z Then: 2014-05-02T14:51:48Z */ } } 

使用Calendar-API:

 // get Calendar instance Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); // substract 7 days // If we give 7 there it will give 8 days back cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)-6); // convert to date Date myDate = cal.getTime(); 

希望这可以帮助。 玩的开心!

对于所有与日期相关的function,您应该考虑使用Joda Library。 Java的日期api设计非常糟糕。 Joda提供了非常好的API。