package com.ydtech.modules.admin.utils; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class SliceUpDateUtil { /** * 日期范围 - 切片 * * * @param startDate 起始日期 * @param endDate 结束日期 * @param type 切片类型 1年 2月 3日 4小时 * @return 切片日期 */ public static List sliceUpDateRange(String startDate, String endDate , int type ) { List rs = new ArrayList<>(); try { int dt = Calendar.DATE; String pattern = "yyyy-MM-dd"; if (type==1) { pattern = "yyyy"; dt = Calendar.YEAR; } else if (type==2) { pattern = "yyyy-MM"; dt = Calendar.MONTH; } else if (type==3) { pattern = "yyyy-MM-dd"; dt = Calendar.DATE; }else if (type==4) { pattern = "yyyy-MM-dd HH"; dt = Calendar.HOUR_OF_DAY; } SimpleDateFormat sd = new SimpleDateFormat(pattern); Calendar sc = Calendar.getInstance(); Calendar ec = Calendar.getInstance(); sc.setTime(sd.parse(startDate)); ec.setTime(sd.parse(endDate)); while (sc.compareTo(ec) < 1) { rs.add(sd.format(sc.getTime())); sc.add(dt, 1); } } catch (Exception e) { e.printStackTrace(); } return rs; } /** * @version * @author: hxl * @Date: 2024/6/5 17:20 * @Description: 获取某年的第一天 */ public static String getFirstDayStringByYear(int year) { LocalDate firstDayOfYear = LocalDate.of(year, 1, 1); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String firstDayString = firstDayOfYear.format(formatter); return firstDayString; } /** * @version * @author: hxl * @Date: 2024/6/5 17:20 * @Description: 获取某年的最后一天 */ public static String getLastDayStringByYear(int year) { LocalDate lastDayOfYear = LocalDate.of(year, 12, 31); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String lastDayString = lastDayOfYear.format(formatter); return lastDayString; } /** * @version * @author: hxl * @Date: 2024/6/5 17:20 * @Description: 获取某月的第一天 */ public static String getFirstDayStringByMonth(int year,int month) { LocalDate firstDayOfMonth = LocalDate.of(year, month, 1); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String firstDayString = firstDayOfMonth.format(formatter); return firstDayString; } /** * @version * @author: hxl * @Date: 2024/6/5 17:20 * @Description: 获取某月的最后一天 */ public static String getLastDayStringByMonth(int year,int month) { LocalDate firstDayOfMonth = LocalDate.of(year, month, 1); LocalDate lastDayOfMonth = firstDayOfMonth.withDayOfMonth(firstDayOfMonth.lengthOfMonth()); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String lastDayString = lastDayOfMonth.format(formatter); return lastDayString; } /** * @version * @author: hxl * @Date: 2024/6/19 11:23 * @Description: */ public static String getWeekFirstAndLastDay(Date date,int type){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); int diff = Calendar.MONDAY - dayOfWeek; if (diff > 0) { diff -= 7; } calendar.add(Calendar.DATE, diff); Date firstDayDate = calendar.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); calendar.add(Calendar.DATE, 6); Date lastDayDate = calendar.getTime(); String firstDayStr = sdf.format(firstDayDate); String lastDayStr = sdf.format(firstDayDate); if(type==1){ return firstDayStr; } return lastDayStr; } /** * @version * @author: hxl * @Date: 2024/6/19 11:23 * @Description: 获取此月的开始时间和结束时间 */ public static String getMonthFirstAndLastDay(Date date,int type){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, 1); Date firstDayDate = calendar.getTime(); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date lastDayDate = calendar.getTime(); String firstDayStr = sdf.format(firstDayDate); String lastDayStr = sdf.format(firstDayDate); if(type==1){ return firstDayStr; } return lastDayStr; } /** * @version * @author: hxl * @Date: 2024/6/19 11:23 * @Description: 获取进3个月日期 */ public static String getThreeMonthFirstAndLastDay(Date date,int type,int monthSize){ int size=monthSize-1; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //获取当月的最后一天的日期 Date firstDayDate = calendar.getTime(); String firstDayStr = sdf.format(firstDayDate); String lastDayStr = sdf.format(firstDayDate); //获取两个月之前的第一天日期 calendar.add(Calendar.MONTH,-size); calendar.set(Calendar.DAY_OF_MONTH,1); Date lastDayDate = calendar.getTime(); if(type==1){ return firstDayStr; } return lastDayStr; } /** * @version * @author: hxl * @Date: 2024/6/24 11:36 * @Description: 过去时间的计算 */ public static String getBeforeDay(Date date, int type){ Calendar c = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); c.setTime(date); if(0==type){ }else if(1==type){ c.add(Calendar.DATE, - 7); }else if(2==type){ c.add(Calendar.MONTH, -1); }else if(3==type){ c.add(Calendar.MONTH, -3); }else if(4==type){ c.add(Calendar.MONTH, -6); } return format.format(c.getTime()); } /** * @version * @author: hxl * @Date: 2024/7/31 17:59 * @Description: 获取年份的开始时间 */ public static String getYearBeginDateStr(int year) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, Calendar.JANUARY); calendar.set(Calendar.DAY_OF_MONTH, 1); int startYear = calendar.get(Calendar.YEAR); int startMonth = calendar.get(Calendar.MONTH)+1; int startDay = calendar.get(Calendar.DAY_OF_MONTH); String month =startMonth<10?"0"+startMonth: String.valueOf(startMonth); String day =startDay<10?"0"+startDay: String.valueOf(startDay); return startYear+"-"+month+"-"+day; } /** * @version * @author: hxl * @Date: 2024/7/31 18:00 * @Description: 获取年份的结束时间 */ public static String getYearEndDateStr(int year) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, year); calendar.set(Calendar.MONTH, Calendar.DECEMBER); calendar.set(Calendar.DAY_OF_MONTH, 31); int startYear = calendar.get(Calendar.YEAR); int startMonth = calendar.get(Calendar.MONTH)+1; int startDay = calendar.get(Calendar.DAY_OF_MONTH); String month =startMonth<10?"0"+startMonth: String.valueOf(startMonth); String day =startDay<10?"0"+startDay: String.valueOf(startDay); return startYear+"-"+month+"-"+day; } /** * @version * @author: hxl * @Date: 2024/8/5 10:18 * @Description: 获取月份的开始时间 */ public static String getStartOfMonth(int year, int month) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); } /** * @version * @author: hxl * @Date: 2024/8/5 10:18 * @Description: 获取月份的结束时间 */ public static String getEndOfMonth(int year, int month) { Calendar calendar = Calendar.getInstance(); calendar.set(year, month - 1, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime()); } }