我知道我可以使用new Date()
获取当前日期,但我希望过去的日期(12周后)。例如:今天是2014年1月3日,12周的日期将是2013年10月11日。
如何在java中做到这一点?
答案 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的更多信息。