|
|
@@ -1,6 +1,8 @@
|
|
|
package com.sckw.core.utils;
|
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
+import org.springframework.util.Assert;
|
|
|
+
|
|
|
import java.text.DateFormat;
|
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
@@ -8,10 +10,13 @@ import java.time.Duration;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
-import java.util.*;
|
|
|
+import java.util.Calendar;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
/**
|
|
|
* 日期处理
|
|
|
+ *
|
|
|
* @author
|
|
|
*/
|
|
|
public class DateUtils extends DateUtil {
|
|
|
@@ -119,7 +124,7 @@ public class DateUtils extends DateUtil {
|
|
|
/**
|
|
|
* 日期格式化 日期格式为:yyyy-MM-dd
|
|
|
*
|
|
|
- * @param date 日期
|
|
|
+ * @param date 日期
|
|
|
* @return 返回yyMMdd格式日期
|
|
|
*/
|
|
|
public static Date formatDate(String date) {
|
|
|
@@ -128,7 +133,7 @@ public class DateUtils extends DateUtil {
|
|
|
SimpleDateFormat df = new SimpleDateFormat(DATE_TIME_PATTERN);
|
|
|
return df.parse(date);
|
|
|
}
|
|
|
- } catch (Exception e){
|
|
|
+ } catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return null;
|
|
|
@@ -138,7 +143,7 @@ public class DateUtils extends DateUtil {
|
|
|
/**
|
|
|
* 日期格式化 日期格式为:yyyy-MM-dd
|
|
|
*
|
|
|
- * @param date 日期
|
|
|
+ * @param date 日期
|
|
|
* @return 返回yyMMdd格式日期
|
|
|
*/
|
|
|
public static String formatDate(Date date) {
|
|
|
@@ -153,7 +158,7 @@ public class DateUtils extends DateUtil {
|
|
|
/**
|
|
|
* 日期格式化 日期格式为:yyyy-MM-dd
|
|
|
*
|
|
|
- * @param expireDate 日期
|
|
|
+ * @param expireDate 日期
|
|
|
* @return 返回yyMMdd格式日期
|
|
|
*/
|
|
|
public static String formatDateToYYMMDD(Date expireDate) {
|
|
|
@@ -196,6 +201,7 @@ public class DateUtils extends DateUtil {
|
|
|
|
|
|
/**
|
|
|
* 方法描述:将时间转换为制定格式的日期时间字符串
|
|
|
+ *
|
|
|
* @param date
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -410,6 +416,7 @@ public class DateUtils extends DateUtil {
|
|
|
|
|
|
/**
|
|
|
* 对日期的【分钟】进行加/减
|
|
|
+ *
|
|
|
* @param date 日期
|
|
|
* @param minutes 分钟数,负数为减
|
|
|
* @return 加/减几分钟后的日期
|
|
|
@@ -423,6 +430,7 @@ public class DateUtils extends DateUtil {
|
|
|
|
|
|
/**
|
|
|
* 对日期的【小时】进行加/减
|
|
|
+ *
|
|
|
* @param date 日期
|
|
|
* @param hours 小时数,负数为减
|
|
|
* @return 加/减几小时后的日期
|
|
|
@@ -436,6 +444,7 @@ public class DateUtils extends DateUtil {
|
|
|
|
|
|
/**
|
|
|
* 对日期的【天】进行加/减
|
|
|
+ *
|
|
|
* @param date 日期
|
|
|
* @param days 天数,负数为减
|
|
|
* @return 加/减几天后的日期
|
|
|
@@ -449,6 +458,7 @@ public class DateUtils extends DateUtil {
|
|
|
|
|
|
/**
|
|
|
* 对日期的【周】进行加/减
|
|
|
+ *
|
|
|
* @param date 日期
|
|
|
* @param weeks 周数,负数为减
|
|
|
* @return 加/减几周后的日期
|
|
|
@@ -462,6 +472,7 @@ public class DateUtils extends DateUtil {
|
|
|
|
|
|
/**
|
|
|
* 对日期的【月】进行加/减
|
|
|
+ *
|
|
|
* @param date 日期
|
|
|
* @param months 月数,负数为减
|
|
|
* @return 加/减几月后的日期
|
|
|
@@ -475,6 +486,7 @@ public class DateUtils extends DateUtil {
|
|
|
|
|
|
/**
|
|
|
* 对日期的【年】进行加/减
|
|
|
+ *
|
|
|
* @param date 日期
|
|
|
* @param years 年数,负数为减
|
|
|
* @return 加/减几年后的日期
|
|
|
@@ -488,7 +500,8 @@ public class DateUtils extends DateUtil {
|
|
|
|
|
|
/**
|
|
|
* 时间比较大小
|
|
|
- * @param date1 日期
|
|
|
+ *
|
|
|
+ * @param date1 日期
|
|
|
* @param date2 年数,负数为减
|
|
|
* @return -1 date1小于date2、0 date1等于date2、1 date1大于date2
|
|
|
*/
|
|
|
@@ -506,6 +519,7 @@ public class DateUtils extends DateUtil {
|
|
|
/**
|
|
|
* ltf 获取
|
|
|
* 获取指定日期所在周的周一
|
|
|
+ *
|
|
|
* @param date
|
|
|
* @return
|
|
|
*/
|
|
|
@@ -518,28 +532,29 @@ public class DateUtils extends DateUtil {
|
|
|
c.add(Calendar.DATE, c.getFirstDayOfWeek() - c.get(Calendar.DAY_OF_WEEK) + 1);
|
|
|
return c.getTime();
|
|
|
}
|
|
|
+
|
|
|
/**
|
|
|
* 获取startDate日期后month月的日期
|
|
|
+ *
|
|
|
* @param startDate 开始日期
|
|
|
- * @param month 几个月后
|
|
|
- * @author wenzhang
|
|
|
+ * @param month 几个月后
|
|
|
* @return
|
|
|
+ * @author wenzhang
|
|
|
*/
|
|
|
- public static Date getMonthDate(Date startDate, int month){
|
|
|
+ public static Date getMonthDate(Date startDate, int month) {
|
|
|
LocalDateTime localDateTime = startDate.toInstant()
|
|
|
- .atZone(ZoneId.systemDefault() )
|
|
|
+ .atZone(ZoneId.systemDefault())
|
|
|
.toLocalDateTime().plusMonths(month);
|
|
|
- Date date = Date.from(localDateTime.atZone( ZoneId.systemDefault()).toInstant());
|
|
|
+ Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
return date;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
* @param days
|
|
|
- * @author wenzhang
|
|
|
* @return
|
|
|
+ * @author wenzhang
|
|
|
*/
|
|
|
- public static Date getDateAdd(int days){
|
|
|
+ public static Date getDateAdd(int days) {
|
|
|
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
Calendar c = Calendar.getInstance();
|
|
|
c.add(Calendar.DAY_OF_MONTH, days);
|
|
|
@@ -549,6 +564,7 @@ public class DateUtils extends DateUtil {
|
|
|
|
|
|
/**
|
|
|
* 计算两个日期的月数
|
|
|
+ *
|
|
|
* @param startDate
|
|
|
* @param endDate
|
|
|
* @return
|
|
|
@@ -564,7 +580,7 @@ public class DateUtils extends DateUtil {
|
|
|
int month = endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH);
|
|
|
int day = Math.abs(endCalendar.get(Calendar.DATE) - startCalendar.get(Calendar.DATE));
|
|
|
|
|
|
- if (year == 0 && month == 0){
|
|
|
+ if (year == 0 && month == 0) {
|
|
|
startCalendar.set(Calendar.DATE, 1);
|
|
|
endCalendar.set(Calendar.DATE, 1);
|
|
|
endCalendar.roll(Calendar.DATE, -1);
|
|
|
@@ -594,4 +610,44 @@ public class DateUtils extends DateUtil {
|
|
|
return monthCount;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @desc: 获取指定时间的一周/月开始时间
|
|
|
+ * @author: yzc
|
|
|
+ * @date: 2023-09-11 16:08
|
|
|
+ * @Param dateType: 1周、2月
|
|
|
+ * @return: java.util.Date
|
|
|
+ */
|
|
|
+ public static Date getStartTimeByDateType(Integer dateType, LocalDateTime time) {
|
|
|
+ Assert.notNull(dateType, "获取上周/月开始时间,日期类型参数缺失");
|
|
|
+ Assert.notNull(time, "获取上周/月开始时间,日期类型参数缺失");
|
|
|
+ int days = Objects.equals(dateType, 1) ? 6 : 29;
|
|
|
+ LocalDateTime startTime = time.minusDays(days).with(LocalDateTime.MIN);
|
|
|
+ return formatDate(startTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc: 获取指定时间的一周/月结束时间
|
|
|
+ * @author: yzc
|
|
|
+ * @date: 2023-09-11 16:43
|
|
|
+ * @Param dateType: 1周、2月
|
|
|
+ * @return: java.util.Date
|
|
|
+ */
|
|
|
+ public static Date getEndTimeByDateType(Integer dateType, LocalDateTime time) {
|
|
|
+ Assert.notNull(dateType, "获取上周/月结束时间,时间参数缺失");
|
|
|
+ Assert.notNull(time, "获取上周/月结束时间,时间参数缺失");
|
|
|
+ int days = Objects.equals(dateType, 1) ? 7 : 30;
|
|
|
+ LocalDateTime endTime = time.minusDays(days).with(LocalDateTime.MAX);
|
|
|
+ return formatDate(endTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @desc: LocalDateTime转换为Date
|
|
|
+ * @author: yzc
|
|
|
+ * @date: 2023-09-11 16:42
|
|
|
+ * @Param time:
|
|
|
+ * @return: java.util.Date
|
|
|
+ */
|
|
|
+ public static Date formatDate(LocalDateTime time) {
|
|
|
+ return Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
+ }
|
|
|
}
|