如何在java中计算12周的回溯日期?

时间:2014-01-03 02:59:03

标签: java

我知道我可以使用new Date()获取当前日期,但我希望过去的日期(12周后)。例如:今天是2014年1月3日,12周的日期将是2013年10月11日。

如何在java中做到这一点?

5 个答案:

答案 0 :(得分:9)

Date date = new Date();
long timeAgo = 1000L * 60 * 60 * 24 * 7 * 12;
Date dateAgo = new Date(date.getTime() - timeAgo);

应该工作得很好。不要错过乘法中的L,否则会得到溢出结果。 Pshemo的好地方。

仅供参考,timeAgo列如下:

1000 is representative of a second (1000 milliseconds)
1000 * 60 is representative of a minute (60 seconds)
1000 * 60 * 60 is representative of an hour (60 minutes)
1000 * 60 * 60 * 24 is representative of a day (24 hours)
1000 * 60 * 60 * 24 * 7 is representative of a week (7 days)
1000 * 60 * 60 * 24 * 7 * 12 is representative of 12 weeks (12 weeks)

答案 1 :(得分:8)

大部分日期实际上已弃用,已被Calendar取代:

Calendar.getInstance().add(Calendar.WEEK_OF_YEAR, -12);

答案 2 :(得分:5)

使用JDK 1.8的LocalDate.minusWeeks

 LocalDate first=LocalDate.now();
 LocalDate second=first.minusWeeks(12);

答案 3 :(得分:3)

我很惊讶没有人提到Joda Time

DateTime dt = new DateTime();
System.out.println(dt);
System.out.println(dt.minusWeeks(12));
System.out.println(dt.minusWeeks(12).toDate());//if you prefer Date object

输出:

2014-01-03T04:40:40.402+01:00
2013-10-11T04:40:40.402+02:00
Fri Oct 11 04:40:40 CEST 2013

答案 4 :(得分:2)

DateUtils.addWeeks(new Date(), -12);

有关DateUtils的更多信息。