Java正在获取前一周的日期列表
在根据指定日期获取前一周的日期列表时,我遇到了一些问题。这是我的密码:Java正在获取前一周的日期列表,java,android,date,Java,Android,Date,在根据指定日期获取前一周的日期列表时,我遇到了一些问题。这是我的密码: SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd"); Date refDate = null; try { refDate = formatter.parse("Sun Aug 05"); } catch (ParseException e) {
SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd");
Date refDate = null;
try {
refDate = formatter.parse("Sun Aug 05");
} catch (ParseException e) {
e.printStackTrace();
}
Date[] days = reservationViewModel.getDaysOfWeek(refDate, Calendar.getInstance().getFirstDayOfWeek());
for (Date day : days) {
// display
}
以及获取日期列表的代码:
public static Date[] getDaysOfWeek(Date refDate, int firstDayOfWeek) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(refDate);
calendar.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);
Date[] daysOfWeek = new Date[7];
for (int i = 0; i < 7; i++) {
daysOfWeek[i] = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return daysOfWeek;
}
日期都错了。应该从7月29日到8月4日。有什么想法吗?谢谢 使用Calendar.week\u OF\u YEAR将时间从给定日期移到前一周。代码类似于calendar.setCalendar.WEEK\u OF_YEAR,calendar.getCalendar.WEEK\u OF_YEAR-1 所以在你的情况下是这样的
public static Date[] getDaysOfWeek(Date refDate, int firstDayOfWeek) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(refDate);
calendar.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);
calendar.set(Calendar.WEEK_OF_YEAR, calendar.get(Calendar.WEEK_OF_YEAR) - 1);
Date[] daysOfWeek = new Date[7];
for (int i = 0; i < 7; i++) {
daysOfWeek[i] = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return daysOfWeek;
}
不,不,我想做的是根据指定的日期获取前一周的日期。例如,我得到一个上周的日期,然后我想得到当前日期前两周的日期,而不是根据当前日期继续得到过去一周的日期date@guest176969这就是我想说的。只需使用此方法。@guest176969此处1周前并不意味着您要将其从当前日期移到1周前。它将在给定日期前一周移动。但当我在8月5日的太阳中通过时,我得到了7月26日的太阳,一直到8月1日的星期六,这是错误的。你知道为什么会这样吗?应该是7月29日到8月04@guest176969API做得很正确,但您使用的方式不正确。你的期望是什么?你是想在给定日期之前获得7天的时间吗?或者你是想在约会前一周得到时间?两者完全不同。发布前搜索堆栈溢出。这已经在很多方面讨论过很多次了,您使用的是多年前被java.time类取代的糟糕的旧类。这已经在堆栈溢出上解释过很多次了。哥们,8月5日,星期日。它没有提到哪一年。你为什么认为计算机会猜呢?将年份添加到字符串和格式中。记住根据答案减去一周。问题解决了。
public static Date[] getDaysOfWeek(Date refDate, int firstDayOfWeek) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(refDate);
calendar.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);
calendar.set(Calendar.WEEK_OF_YEAR, calendar.get(Calendar.WEEK_OF_YEAR) - 1);
Date[] daysOfWeek = new Date[7];
for (int i = 0; i < 7; i++) {
daysOfWeek[i] = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return daysOfWeek;
}
public static Date[] getPrevious7Days(Date refDate) {
Calendar calendar = Calendar.getInstance();
int currentYear = calendar.get(Calendar.YEAR);
calendar.setTime(refDate);
calendar.set(Calendar.YEAR, currentYear);
calendar.add(Calendar.DAY_OF_MONTH, -7);
Date[] daysOfWeek = new Date[7];
for (int i = 0; i < 7; i++) {
daysOfWeek[i] = calendar.getTime();
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
return daysOfWeek;
}
Sun Jul 29 00:00:00 IST 2018
Mon Jul 30 00:00:00 IST 2018
Tue Jul 31 00:00:00 IST 2018
Wed Aug 01 00:00:00 IST 2018
Thu Aug 02 00:00:00 IST 2018
Fri Aug 03 00:00:00 IST 2018
Sat Aug 04 00:00:00 IST 2018