parent
3c3cfd9b76
commit
4862b3218c
5 changed files with 518 additions and 15 deletions
@ -0,0 +1,498 @@ |
||||
package org.springblade.desk.energy.util;/** |
||||
* @date : 2026/4/25 11:47 |
||||
*/ |
||||
|
||||
import com.alibaba.fastjson.JSONObject; |
||||
|
||||
import java.text.SimpleDateFormat; |
||||
import java.util.ArrayList; |
||||
import java.util.Calendar; |
||||
import java.util.Date; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 文件名称 |
||||
* @module 归属项目 |
||||
* @author *** |
||||
* @date 2025/11/26 10:27 |
||||
*/ |
||||
public class DateTools { |
||||
|
||||
|
||||
/** |
||||
* 查询今日是否是节假日 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static Boolean isHoliday() { |
||||
//IBsFactoryCalDataService bsFactoryCalDataService = (IBsFactoryCalDataService) SpringContextUtil.getBean("bsFactoryCalDataService");
|
||||
//
|
||||
//Calendar c = Calendar.getInstance();
|
||||
//c.setTime(new Date());
|
||||
//
|
||||
//int YY = c.get(Calendar.YEAR);
|
||||
//int MM = c.get(Calendar.MONTH) + 1;
|
||||
//int DD = c.get(Calendar.DATE);
|
||||
//
|
||||
//StringBuffer sb = new StringBuffer();
|
||||
//sb.append(YY);
|
||||
//sb.append(MM < 10 ? "0" : "").append(MM);
|
||||
//sb.append(DD < 10 ? "0" : "").append(DD);
|
||||
//BsFactoryCalData bsFactoryCalData = bsFactoryCalDataService.getByYmd(Integer.valueOf(sb.toString()));
|
||||
//
|
||||
//return bsFactoryCalData == null ? false : bsFactoryCalData.getDayOff() == 1 ? true : false;
|
||||
return false; |
||||
} |
||||
|
||||
/** |
||||
* 获取当前日期的往后day天的所有日期集合 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static List<Date> listNextDayDates(Integer day) { |
||||
|
||||
Calendar cal1 = Calendar.getInstance(); |
||||
Calendar cal2 = Calendar.getInstance(); |
||||
|
||||
cal1.setTime(new Date()); |
||||
cal2.setTime(new Date()); |
||||
|
||||
cal1.add(Calendar.DAY_OF_MONTH, 0); |
||||
cal2.add(Calendar.DAY_OF_MONTH, day); |
||||
|
||||
Calendar cStart = Calendar.getInstance(); |
||||
cStart.setTime(cal1.getTime()); |
||||
|
||||
List dateList = new ArrayList(); |
||||
//别忘了,把起始日期加上
|
||||
dateList.add(cal1.getTime()); |
||||
// 此日期是否在指定日期之后
|
||||
while (cal2.getTime().after(cStart.getTime())) { |
||||
// 根据日历的规则,为给定的日历字段添加或减去指定的时间量
|
||||
cStart.add(Calendar.DAY_OF_MONTH, 1); |
||||
dateList.add(cStart.getTime()); |
||||
} |
||||
return dateList; |
||||
} |
||||
|
||||
/** |
||||
* 获取当前时、天、月 例:时:Calendar.HOUR_OF_DAY |
||||
* |
||||
* @return |
||||
*/ |
||||
public static Integer getDateTime(int cal) { |
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.setTime(new Date()); |
||||
|
||||
int i = calendar.get(cal); |
||||
if (Calendar.MONTH == cal) { |
||||
i += 1; |
||||
} |
||||
return i; |
||||
} |
||||
|
||||
/** |
||||
* 获取传入日期时、天、月 例:时:Calendar.HOUR_OF_DAY |
||||
* |
||||
* @return |
||||
*/ |
||||
public static Integer getDateTime(Date date, int cal) { |
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.setTime(date); |
||||
|
||||
int i = calendar.get(cal); |
||||
if (Calendar.MONTH == cal) { |
||||
i += 1; |
||||
} |
||||
|
||||
return i; |
||||
} |
||||
|
||||
/** |
||||
* 补全数值类型 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static String repairVal(Integer val) { |
||||
String valStr = null; |
||||
if (val < 10) { |
||||
valStr = "0" + val; |
||||
} else { |
||||
valStr = "" + val; |
||||
} |
||||
return valStr; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* 获取月多少天 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static Integer getMonthHowDay(Date date) { |
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.setTime(date); |
||||
return calendar.getActualMaximum(Calendar.DAY_OF_MONTH); |
||||
} |
||||
|
||||
/** |
||||
* 获取月份最小日期时间 |
||||
* |
||||
* @param d |
||||
* @return |
||||
*/ |
||||
public static final String getDateWithoutTime(Date d) { |
||||
if (d == null) { |
||||
return null; |
||||
} else { |
||||
Calendar c = Calendar.getInstance(); |
||||
c.setTime(d); |
||||
c.set(Calendar.DATE, 1); |
||||
c.set(11, 0); |
||||
c.set(12, 0); |
||||
c.set(13, 0); |
||||
c.set(14, 0); |
||||
return DateTime.date2String(c.getTime(), true, true); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* 获取月份最大日期时间 |
||||
* |
||||
* @param d |
||||
* @return |
||||
*/ |
||||
public static final String getDateWithMaxTime(Date d) { |
||||
Calendar c = Calendar.getInstance(); |
||||
c.setTime(d); |
||||
c.set(Calendar.DATE, DateTools.getMonthHowDay(d)); |
||||
c.set(11, 23); |
||||
c.set(12, 59); |
||||
c.set(13, 59); |
||||
c.set(14, 999); |
||||
return DateTime.date2String(c.getTime(), true, true); |
||||
} |
||||
|
||||
/** |
||||
* 获取当年的第一天 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static final String getCurrYearFirst() { |
||||
Calendar currCal = Calendar.getInstance(); |
||||
int currentYear = currCal.get(Calendar.YEAR); |
||||
return getYearFirst(currentYear); |
||||
} |
||||
|
||||
/** |
||||
* 获取当年的最后一天 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static final String getCurrYearLast() { |
||||
Calendar currCal = Calendar.getInstance(); |
||||
int currentYear = currCal.get(Calendar.YEAR); |
||||
return getYearLast(currentYear); |
||||
} |
||||
|
||||
/** |
||||
* 获取某年第一天日期 |
||||
* |
||||
* @param year 年份 |
||||
* @return Date |
||||
*/ |
||||
public static final String getYearFirst(int year) { |
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.clear(); |
||||
calendar.set(Calendar.YEAR, year); |
||||
return DateTime.date2String(calendar.getTime(), true, true); |
||||
} |
||||
|
||||
/** |
||||
* 获取某年最后一天日期 |
||||
* |
||||
* @param year 年份 |
||||
* @return Date |
||||
*/ |
||||
public static final String getYearLast(int year) { |
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.clear(); |
||||
calendar.set(Calendar.YEAR, year); |
||||
calendar.roll(Calendar.DAY_OF_YEAR, -1); |
||||
return DateTime.date2String(calendar.getTime(), true, true); |
||||
} |
||||
|
||||
/** |
||||
* 获得本月的开始时间 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static String getMonthStartTimeStr(Date date) { |
||||
Calendar c = Calendar.getInstance(); |
||||
c.clear(); |
||||
c.setTime(date); |
||||
c.set(Calendar.DATE, 1); |
||||
return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()) + " 00:00:00"; |
||||
} |
||||
|
||||
/** |
||||
* 本月的结束时间 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static String getMonthEndTimeStr(Date date) { |
||||
Calendar c = Calendar.getInstance(); |
||||
c.clear(); |
||||
c.setTime(date); |
||||
c.set(Calendar.DATE, 1); |
||||
c.add(Calendar.MONTH, 1); |
||||
c.add(Calendar.DATE, -1); |
||||
return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()) + " 23:59:59"; |
||||
} |
||||
|
||||
/** |
||||
* 获取某年开始时间 |
||||
* |
||||
* @return Date |
||||
*/ |
||||
public static final String getYearStartTimeStr(Date date) { |
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.clear(); |
||||
calendar.setTime(date); |
||||
return calendar.get(Calendar.YEAR) + "-01-01 00:00:00"; |
||||
} |
||||
|
||||
/** |
||||
* 获取某年结束时间 |
||||
* |
||||
* @return Date |
||||
*/ |
||||
public static final String getYearEndTimeStr(Date date) { |
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.clear(); |
||||
calendar.setTime(date); |
||||
return calendar.get(Calendar.YEAR) + "-12-31 23:59:59"; |
||||
} |
||||
|
||||
/** |
||||
* <p>方法名: getTomorrow </p> |
||||
* <p>方法描述: 获取当前日期后几天 </p> |
||||
* |
||||
* @param day |
||||
* @author lyj |
||||
* @date 2022-02-19 16:59 |
||||
*/ |
||||
public static final String getTomorrow(int day) { |
||||
|
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.add(Calendar.DATE, day); |
||||
|
||||
return DateTime.date2String(calendar.getTime(), true, true); |
||||
} |
||||
|
||||
/** |
||||
* <p>方法名: getYesterday </p> |
||||
* <p>方法描述: 获取当前日期前几天 </p> |
||||
* |
||||
* @param day |
||||
* @author lyj |
||||
* @date 2022-02-19 16:59 |
||||
*/ |
||||
public static final String getYesterday(int day) { |
||||
|
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.add(Calendar.DATE, -day); |
||||
|
||||
return DateTime.date2String(calendar.getTime(), true, true); |
||||
} |
||||
|
||||
public static Date dateAdd(Date date, int x) { |
||||
//入参的格式
|
||||
// 24小时制
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
||||
|
||||
if (date == null) { |
||||
return null; |
||||
} |
||||
|
||||
Calendar cal = Calendar.getInstance(); |
||||
cal.setTime(date); |
||||
// 24小时制
|
||||
cal.add(Calendar.DATE, x); |
||||
//得到结算后的结果 yyyy-MM-dd HH:mm
|
||||
date = cal.getTime(); |
||||
return date; |
||||
} |
||||
|
||||
public static Date dateAdd(Date date, int field, int x) { |
||||
//入参的格式
|
||||
// 24小时制
|
||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
||||
|
||||
if (date == null) { |
||||
return null; |
||||
} |
||||
|
||||
Calendar cal = Calendar.getInstance(); |
||||
cal.setTime(date); |
||||
cal.add(field, x); |
||||
//得到结算后的结果 yyyy-MM-dd HH:mm
|
||||
date = cal.getTime(); |
||||
return date; |
||||
} |
||||
|
||||
|
||||
/** |
||||
* <p>Description: 计算间隔天数 </p> |
||||
* |
||||
* @param date |
||||
* @param remDays |
||||
* @return: int |
||||
* @Author qjh |
||||
* @Date: 2022-10-11 9:11 |
||||
*/ |
||||
public static int cycleDay(Date date, Integer remDays) { |
||||
|
||||
int days = ((int) (System.currentTimeMillis() / 1000) - (int) (date.getTime() / 1000)) / (60 * 60 * 24); |
||||
if (remDays != null) { |
||||
days += remDays; |
||||
} |
||||
return days; |
||||
} |
||||
|
||||
/** |
||||
* 根据当前日期返回日期范围 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static JSONObject getQuantityDate() { |
||||
Calendar cal = Calendar.getInstance(); |
||||
|
||||
int YY = cal.get(Calendar.YEAR); |
||||
int MM = cal.get(Calendar.MONTH) + 1; |
||||
int DD = cal.get(Calendar.DATE); |
||||
JSONObject obj = new JSONObject(); |
||||
String str1 = ""; |
||||
String str2 = ""; |
||||
String str3 = ""; |
||||
String str4 = ""; |
||||
// 如果当前日期大于20,返回本月21号,下月20
|
||||
if (DD > 20) { |
||||
// 本月
|
||||
str1 = YY + "-" + MM + "-" + "21 00:00:00"; |
||||
if (MM == 12) { |
||||
str2 = (YY + 1) + "-" + 1 + "-" + "20 23:59:59"; |
||||
} else { |
||||
str2 = YY + "-" + (MM + 1) + "-" + "20 23:59:59"; |
||||
} |
||||
str3 = String.valueOf(MM); |
||||
str4 = String.valueOf(YY); |
||||
} else { |
||||
|
||||
str3 = String.valueOf(MM); |
||||
str4 = String.valueOf(YY); |
||||
// 返回上月21号,本月20
|
||||
if (MM == 1) { |
||||
str1 = (YY - 1) + "-" + 12 + "-" + "21 00:00:00"; |
||||
str4 = String.valueOf(YY - 1); |
||||
} else { |
||||
str1 = YY + "-" + (MM - 1) + "-" + "21 00:00:00"; |
||||
str3 = String.valueOf(MM - 1); |
||||
} |
||||
str2 = YY + "-" + MM + "-" + "20 23:59:59"; |
||||
} |
||||
obj.put("YY", str4 + "-1-1 00:00:00"); |
||||
obj.put("MM", str3); |
||||
obj.put("startTime", str1); |
||||
obj.put("endTime", str2); |
||||
return obj; |
||||
} |
||||
|
||||
/** |
||||
* 获取传入日期的年月 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static String getYearMonth(Date date) { |
||||
Calendar cal = Calendar.getInstance(); |
||||
cal.setTime(date); |
||||
int year = cal.get(Calendar.YEAR); |
||||
String month = cal.get(Calendar.MONTH) + 1 >= 10 ? String.valueOf(cal.get(Calendar.MONTH) + 1) : "0" + (cal.get(Calendar.MONTH) + 1); |
||||
return year + "-" + month; |
||||
} |
||||
|
||||
/** |
||||
* 根据当前日期获取上个月减去N天的日期 |
||||
* |
||||
* @return |
||||
*/ |
||||
public static String getLastMonthData(Integer day) { |
||||
Calendar cal = Calendar.getInstance(); |
||||
|
||||
int YY = cal.get(Calendar.YEAR); |
||||
int MM = cal.get(Calendar.MONTH); |
||||
int DD = cal.get(Calendar.DATE); |
||||
String mm = MM < 10 ? "0" + MM : MM + ""; |
||||
String dd = DD < 10 ? "0" + DD : DD + ""; |
||||
|
||||
Integer monthHowDay = DateTools.getMonthHowDay(DateTime.parse(YY + "-" + mm + "-" + dd + " 00:00:00")); |
||||
DD = monthHowDay - day + 1; |
||||
System.out.println(YY + "-" + mm + "-" + DD + " 00:00:00"); |
||||
return YY + "-" + mm + "-" + DD + " 00:00:00"; |
||||
} |
||||
|
||||
/** |
||||
* 功能描述: 获取上一周的开始时间和结束时间 |
||||
*/ |
||||
public static JSONObject getLastWeekStartOrEndDayOfWeek(Integer weekNum) { |
||||
|
||||
JSONObject obj = new JSONObject(); |
||||
Calendar calendar = Calendar.getInstance(); |
||||
calendar.add(Calendar.DATE, -7 * weekNum); // 获取上一周
|
||||
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 设置为周一
|
||||
Date monday = calendar.getTime(); |
||||
|
||||
calendar.add(Calendar.DATE, 6); // 设置为周日
|
||||
Date sunday = calendar.getTime(); |
||||
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
||||
obj.put("monday",sdf.format(monday)); |
||||
obj.put("sunday",sdf.format(sunday)); |
||||
return obj; |
||||
|
||||
} |
||||
//20240929 新建以下方法 获取25-25号的时间
|
||||
public static JSONObject getStartEndDate() { |
||||
Calendar cal = Calendar.getInstance(); |
||||
|
||||
int YY = cal.get(Calendar.YEAR); |
||||
int MM = cal.get(Calendar.MONTH) + 1; |
||||
int DD = cal.get(Calendar.DATE); |
||||
JSONObject obj = new JSONObject(); |
||||
String str1 = ""; |
||||
String str2 = ""; |
||||
// 如果当前日期大于25,返回本月25号,下月25
|
||||
if (DD > 25) { |
||||
// 本月
|
||||
str1 = YY + "-" + (MM > 9 ? MM : "0" + MM) + "-" + "25 00:00:00"; |
||||
if (MM == 12) { |
||||
str2 = (YY + 1) + "-" + "01" + "-" + "25 23:59:59"; |
||||
} else { |
||||
str2 = YY + "-" + ((MM + 1) > 9 ? (MM + 1) : "0" + (MM + 1)) + "-" + "25 23:59:59"; |
||||
} |
||||
} else { |
||||
// 返回上月25号,本月25
|
||||
if (MM == 1) { |
||||
str1 = (YY - 1) + "-" + 12 + "-" + "25 00:00:00"; |
||||
} else { |
||||
str1 = YY + "-" + ((MM - 1) > 9 ? MM - 1 : "0" + (MM - 1)) + "-" + "25 00:00:00"; |
||||
} |
||||
str2 = YY + "-" + (MM > 9 ? MM : "0" + MM) + "-" + "25 23:59:59"; |
||||
} |
||||
obj.put("startTime", str1); |
||||
obj.put("endTime", str2); |
||||
System.out.println(str1); |
||||
System.out.println(str2); |
||||
return obj; |
||||
} |
||||
} |
||||
Loading…
Reference in new issue