因项目需要,要拿到过去30天内的日期,翻阅总结得出以下结论,特此记载。
项目中使用了方式1.无需处理,就可以追溯到N天前,
两种方式:
1.此方式,若遇到跨年,跨月时间连续。
private static void getDay2() {
Calendar calendar = Calendar.getInstance();
for (int i = 0; i < 30; i++) {
calendar.add(Calendar.DATE, -1);
String yesterday = new SimpleDateFormat("yyyy-MM-dd ").format(calendar
.getTime());
System.out.println(yesterday);
}
}
结果如下:
2014-01-24
2014-01-23
2014-01-22
2014-01-21
2014-01-20
2014-01-19
2014-01-18
2014-01-17
2014-01-16
2014-01-15
2014-01-14
2014-01-13
2014-01-12
2014-01-11
2014-01-10
2014-01-09
2014-01-08
2014-01-07
2014-01-06
2014-01-05
2014-01-04
2014-01-03
2014-01-02
2014-01-01
2013-12-31
2013-12-30
2013-12-29
2013-12-28
2013-12-27
2013-12-26
2.此方式,使用时间戳进行计算,但时间不连续
private static void getDay() {
for (int i = 0; i < 30; i++) {
Date date = new Date(new Date().getTime() - (24 * 60 * 60 * 1000 * i));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String time = sdf.format(date);
System.out.println(time);
}
}
结果如下:
2014-01-25
2014-01-24
2014-01-23
2014-01-22
2014-01-21
2014-01-20
2014-01-19
2014-01-18
2014-01-17
2014-01-16
2014-01-15
2014-01-14
2014-01-13
2014-01-12
2014-01-11
2014-01-10
2014-01-09
2014-01-08
2014-01-07
2014-01-06
2014-01-05
2014-01-04
2014-01-03
2014-01-02
2014-01-01
2014-02-18
2014-02-17
2014-02-16
2014-02-15
2014-02-14