是否有可能获得本月最后一周的最后一天。
例如,我希望在8月份的第5周的最后一天获得第31天,在9月份的第1周的最后一天获得第3天。
修改:
我以本周为例。本周有2个月,因此我需要每周生成2份不同的每周报告。首次报告将于8月28日至31日举行,第二份报告将于9月1日至3日举行。周从星期日开始
答案 0 :(得分:2)
编辑:在您的评论中澄清后,这是一个解决方案。给定一个月它会返回一个包含一个或两个日期的列表:如果月份在星期六结束,则为一个日期,因此整整一周;如果没有,则在该月的最后一天和随后的星期六结束。
public static final int lastDayOfWeek = Calendar.SATURDAY;
/** month is 1 through 12 for Jan through Dec */
public static List<Date> lastDayOfLastWeek(int year, int month) {
Calendar cal = Calendar.getInstance();
// set to a day in the month in question; Calendar’s month is 0-based, so subtract 1
cal.set(year, month - 1, 1);
// set to last day of month
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
List<Date> result = new ArrayList<Date>(2);
result.add(cal.getTime());
// is this also the last day of the week?
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayOfWeek != lastDayOfWeek) { // no
// set to last day of week and add one more date to result
cal.add(Calendar.DAY_OF_WEEK, lastDayOfWeek - dayOfWeek);
result.add(cal.getTime());
}
return result;
}
例如,2016年4月它将于4月30日星期六返回。对于8月份,它将返回8月31日星期三和9月3日星期六,因为这些是两个期间结束的日期,您需要为其构建报告。
答案 1 :(得分:0)
简单的逻辑可以如下。 1.尝试计算当月最后一天发生的日期。 (例如说8月的最后一天是星期二)。 2.现在添加星期几的天数(一周的最后一天)。 (比如加5来使它成为星期日)
瞧.... 5是你的答案。
通过将星期一= 1,星期二= 2等等使其动态化.... 希望这个逻辑有用,如果您发现了除此之外的任何内容,请发布您的其他调查结果。