1.获取当前日期是星期几
/** * 获取当前日期是星期几 * @param localDateTime * @return */ @Override public String dateToWeeks(LocalDateTime localDateTime) { Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; Calendar cal = Calendar.getInstance(); // 获得一个日历 cal.setTime(date); int w = cal.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) { w = 0; } return weekDays[w]; }
2. 获取当前日期朝前推几天是周一
/** * 获取当前日期朝前推几天是周一 * @param date * @return */ @Override public Integer dateToWeek(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); //因为数组下标从0开始,而返回的是数组的内容,是数组{1,2,3,4,5,6,7}中用1~7来表示,所以要减1 int week = cal.get(Calendar.DAY_OF_WEEK) - 1; if (week == 0) { week = 7; } return week-1; }
3.获取当天的最小时间与最大时间
/** * 获取当天的零点 * @param localDateTime * @return */ @Override public LocalDateTime getNowZero(LocalDateTime localDateTime) { LocalDateTime today_start = LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MIN);//当天00:00:00 return today_start; } /** * 获取当天的最大时间 * @param localDateTime * @return */ @Override public LocalDateTime getNowMax(LocalDateTime localDateTime) { LocalDateTime today_start = LocalDateTime.of(localDateTime.toLocalDate(), LocalTime.MAX);//当天23:59:59 return today_start; }
4. 获取各个时间的零点
/** * 获取各个时间的零点 * @return */ @Override public TimesZeroVo getTimeZero(Date date,LocalDateTime localDateTime) { TimesZeroVo timesZeroVo = new TimesZeroVo(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH-mm-ss"); int year = Integer.valueOf(formatter.format(localDateTime).substring(0, 4)).intValue(); //默认近7天的最小时间 LocalDateTime sevenDaysMin = getNowZero(localDateTime.plusDays(-7).toLocalDate()); //默认近7天的最大时间 LocalDateTime sevenDaysMax = getNowMax(localDateTime.plusDays(-1).toLocalDate()); //获取本周的周一的零点 LocalDateTime firstDayOfWeek = getNowZero(localDateTime.plusDays(~(dateToWeek(date) - 1)).toLocalDate()); //获取本月的第一天的零点 LocalDateTime firstDayOfMonth = getNowZero(localDateTime.toLocalDate().with(TemporalAdjusters.firstDayOfMonth())); //获取本季度的第一天的零点 LocalDateTime firstDayOfQuarter = getNowZero(LocalDate.of(localDateTime.toLocalDate().getYear(), localDateTime.toLocalDate().getMonth().firstMonthOfQuarter(), 1)); //获取本年的第一天的零点 LocalDateTime firstDayOfYear = getNowZero(LocalDate.from(localDateTime.with(TemporalAdjusters.firstDayOfYear()))); //获取本周的最大时间 LocalDateTime lastDayOfWeek = getNowMax(firstDayOfWeek.plusDays(6).toLocalDate()); //获取本月的最大时间 LocalDateTime lastDayOfMonth = getNowMax(localDateTime.toLocalDate().with(TemporalAdjusters.lastDayOfMonth())); //获取本季度的最大时间 LocalDateTime lastDayOfQuarter = getNowMax(firstDayOfQuarter.plusMonths(2).toLocalDate().with(TemporalAdjusters.lastDayOfMonth())); //获取本年的最大时间 LocalDateTime lastDayOfYear = getNowMax(localDateTime.toLocalDate().with(TemporalAdjusters.lastDayOfYear())); timesZeroVo.setSevenDaysMin(sevenDaysMin); timesZeroVo.setSevenDaysMax(sevenDaysMax); timesZeroVo.setFirstDayOfWeek(firstDayOfWeek); timesZeroVo.setFirstDayOfMonth(firstDayOfMonth); timesZeroVo.setFirstDayOfQuarter(firstDayOfQuarter); timesZeroVo.setFirstDayOfYear(firstDayOfYear); timesZeroVo.setLastDayOfWeek(lastDayOfWeek); timesZeroVo.setLastDayOfMonth(lastDayOfMonth); timesZeroVo.setLastDayOfQuarter(lastDayOfQuarter); timesZeroVo.setLastDayOfYear(lastDayOfYear); return timesZeroVo; }
5. 获取本月每周的周一零点
/** * 获取本月每周的周一零点 * @return */ @Override public List<AllWeekMinVO> allWeekMin(LocalDateTime dateTime) { List<AllWeekMinVO> list = new ArrayList<>(); DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); AllWeekMinVO allWeekMinVO = new AllWeekMinVO(); TimesZeroVo timeZero = getTimeZero(Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant()), dateTime); //获取本月第一周 LocalDateTime firstDayOfMonth = timeZero.getFirstDayOfMonth();//起始时间 allWeekMinVO.setWeekNumber("第1周"); allWeekMinVO.setWeekMin(firstDayOfMonth); list.add(allWeekMinVO); //获取本月第二周 Integer integer2 = dateToWeek(Date.from(firstDayOfMonth.atZone(ZoneId.systemDefault()).toInstant())); LocalDateTime beginDayOfTwo = getNowZero(firstDayOfMonth.plusDays(7 - integer2).toLocalDate());//起始时间 //获取本月的最后一周 LocalDateTime lastDayOfLastWeek = timeZero.getLastDayOfMonth();//结束时间 Integer integer1 = dateToWeek(Date.from(lastDayOfLastWeek.atZone(ZoneId.systemDefault()).toInstant())); LocalDateTime firstDayOfLastWeek = getNowZero(lastDayOfLastWeek.plusDays(-integer1).toLocalDate());//起始时间 int day1 = Integer.valueOf(df.format(beginDayOfTwo).substring(8, 10)).intValue(); int day2 = Integer.valueOf(df.format(firstDayOfLastWeek).substring(8, 10)).intValue(); //最后一周与第二周相差及周 int number = (day2-day1)/7; for(int i=0;i<=number;i++){ AllWeekMinVO allWeekMinVO1 = new AllWeekMinVO(); LocalDateTime localDateTime = beginDayOfTwo.plusDays(7 * i); allWeekMinVO1.setWeekMin(localDateTime); allWeekMinVO1.setWeekNumber("第"+String.valueOf(i+2)+"周"); list.add(allWeekMinVO1); } return list; }
6.获取本年每个季度的最小时间
/** * 获取本年每个季度的最小时间 * @param dateTime * @return */ @Override public List<AllWeekMinVO> allMinQuarterMin(LocalDateTime dateTime) { DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); int year = Integer.valueOf(df.format(dateTime).substring(0, 4)).intValue(); List<AllWeekMinVO> list = new ArrayList<>(); LocalDateTime of = LocalDateTime.of(year, 1, 1, 0, 0); for (int i=0;i<=3;i++){ AllWeekMinVO allWeekMinVO = new AllWeekMinVO(); LocalDateTime time = of.plusMonths(3*i); allWeekMinVO.setWeekNumber("第"+String.valueOf(i+1)+"季度"); allWeekMinVO.setWeekMin(time); list.add(allWeekMinVO); } return list; }