我有一个存储在字符串中的当前日期,我需要使用Java中的mongoDB对象动态地从列表中选择当前日期到过去7天的日期
所以我把它保存在一个字符串
中SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.add(Calendar.DATE, -7);
Date s1 = cal1.getTime();
cal2.set(Calendar.HOUR_OF_DAY, 0);
cal2.set(Calendar.MINUTE, 0);
cal2.set(Calendar.SECOND, 0);
cal2.set(Calendar.MILLISECOND, 0);
String s2 = sdf.format(cal2.getTime());
以上,s2
是当前日期2014-05-12
,所以在列表中我需要有如下数据 -
List<String> dates = {'2014-05-12', '2014-05-11','2014-05-10', '2014-05-9','2014-05-8', '2014-05-7','2014-05-6'};
列表日期具有5月6日至5月12日的最后7天的所有值。 (截至5月12日是当前时间戳)
我想使用当前日期动态填充最近7天的列表。
答案 0 :(得分:0)
String date = "2014-05-03";
List<String> dateList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 0; i < 6; i++) {
Date dateParsed = sdf.parse(date);
dateParsed.setDate(dateParsed.getDate() - i);
dateList.add(sdf.format(dateParsed));
}
这样你既不关心月份也不关心年份。在我的例子当天&lt; 0会自动转换为过去一个月。
答案 1 :(得分:0)
虽然您的问题令人困惑,但answer by Bevilaqua似乎是正确的。
仅供参考,这里的代码与Bevilaqua编写的代码相同,但使用的是Joda-Time库。 Joda-Time提供LocalDate
课程,以确定您何时只想要一个没有时间的日期。
由于您的日期字符串是ISO 8601格式,并且Joda-Time默认处理ISO 8601格式,因此无需解析。 Joda-Time可以使用其内置的默认解析器。
String date = "2014-05-03";
LocalDate dateParsed = new LocalDate(date); // Automatically parses ISO 8601 format string.
List<String> dateList = new ArrayList<>();
for (int i = 0; i < 6; i++) {
LocalDate localDate = dateParsed.minusDays( i );
dateList.add( localDate.toString() ); // By default, "toString" generates ISO 8601 format string.
}