35

我在用

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);
4

6 回答 6

58

您可以使用日历类:

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

但正如@Sean Patrick Floyd 提到的,Joda-time是 Date 的最佳 Java 库。

于 2013-06-07T10:36:13.790 回答
21

或使用JodaTime

DateTime lastWeek = new DateTime().minusDays(7);
于 2013-06-07T10:36:53.500 回答
12

如果您愿意,可以使用它来继续使用Date类型和更清晰的代码:

import org.apache.commons.lang.time.DateUtils;
...
Date yourDate = DateUtils.addDays(new Date(), *days here*);
于 2014-01-15T13:04:03.773 回答
10

Java 现在有一个非常好的内置日期库,java.timeJava 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
         */
    }
}
于 2014-05-09T18:52:27.653 回答
9

使用日历 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();

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

于 2013-06-07T10:40:58.677 回答
1

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

于 2013-06-07T10:38:07.043 回答