按日、按周、按月获取最近的日期
最近碰到一个需求,按日、按周、按月分别统计最近时间段内的数据统计 写的比较匆忙,所以用的方法、写的逻辑会混乱一些,望见谅,先记录一下,如果有更好的方法会更新在下面 1、获取前一周每天的日期
// 按日统计 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 0; i < 7; i++) { Date date = DateUtils.addDays(new Date(), -i); String formatDate = format.format(date); System.out.println(formatDate); }
结果:
2、获取最近四周的起止日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); LocalDate date = LocalDate.now(); if (date.getDayOfWeek().getValue() == 0){ date = date.minus(1, ChronoUnit.DAYS); } // 本周一日期 date = date.minus(date.getDayOfWeek().getValue() - 1, ChronoUnit.DAYS); LocalDate localSunday = date.minus(date.getDayOfWeek().getValue() - 7, ChronoUnit.DAYS); System.out.println(date + "****" + localSunday); for (int i = 0; i < 3; i++) { date = date.minus(date.getDayOfWeek().getValue() + 6, ChronoUnit.DAYS); LocalDate lastSunday = date.minus(date.getDayOfWeek().getValue() - 7, ChronoUnit.DAYS); System.out.println(date + "****" + lastSunday); }
结果: 3、获取最近六个月的起止日期
// 按月统计 LocalDate date = LocalDate.now(); LocalDate firstDate = date.withDayOfMonth(1); // 计算本月 LocalDate nextFirstDay = firstDate.minus(-1, ChronoUnit.MONTHS); System.out.println(firstDate + "****" + nextFirstDay); for (int i = 0; i < 5; i++) { firstDate = firstDate.minus(1,ChronoUnit.MONTHS); LocalDate endDate = firstDate.minus(-1,ChronoUnit.MONTHS); System.out.println(firstDate + "****" + endDate); }
最后一个有的扯… 本来想着拿到本月的最后一天,后来想拿到第二个月的第一天,最后在数据库中按日期来检索的时候直接小于第二个月第一天(2022-12-01 00:00:00)就可以了…
下一篇:
数据结构的逻辑结构和物理结构