| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- 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<String> sliceUpDateRange(String startDate, String endDate , int type ) {
- List<String> 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());
- }
- }
|