import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import example.common.ConfigPropertiesManager;
import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat;
import java.util.*;
/**
-
@Author: LiuKeXin
-
@Description:
-
@Date: 2024/6/12
/
@Slf4j
public class DealDateUtil {
/*- 获取当前时间所在周的周一和周日的日期时间
- @return
*/
public static Long getDate(int day) {
String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
Calendar c = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
c.add(Calendar.DATE, day);//负数则为今天前的日期
return DateUtil.beginOfDay(c.getTime()).getTime();
}
/**
-
获得时间范围内,随机时分秒(以10分钟为单位)
-
@param beginTime
-
@param endTime
-
@return
*/
public static Long getRandomDate(Date beginTime, Date endTime) {Integer randomTime = 20;
List randomList = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
calendar.setTime(beginTime); //获得当前日期 YYYY-MM-dd HH:mm:ssDate tmp2 = beginTime;
while (tmp2.getTime() < endTime.getTime()) {
tmp2 = calendar.getTime();
// 分钟 + 20
calendar.add(Calendar.MINUTE, randomTime);
randomList.add(tmp2);
}// 随机取集合中一位返回
Random random = new Random();
int index = random.nextInt(randomList.size());
return randomList.get(index).getTime();
}
/**
-
获取当前时间所在周的周一和周日的日期时间
-
@return
*/
public static Map<String, String> getWeekDate() {
Map<String, String> map = new HashMap();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);Calendar cal = Calendar.getInstance();
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (dayWeek == 1) {
dayWeek = 8;
}cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - dayWeek);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
Date mondayDate = cal.getTime();
String weekBegin = sdf.format(mondayDate);cal.add(Calendar.DATE, 4 + cal.getFirstDayOfWeek());
Date sundayDate = cal.getTime();
String weekEnd = sdf.format(sundayDate);map.put(“mondayDate”, weekBegin + " 00:00:00");
map.put(“sundayDate”, weekEnd + " 23:59:59");
log.info(“getWeekDate res = {}”, JSON.toJSONString(map));
return map;
}
/**
- 获得本月第一天
*/
public static Date getCurrentMonthStartDay() {
String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
Calendar calstr = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
calstr.add(Calendar.MONTH, 0);//本月
calstr.set(Calendar.DAY_OF_MONTH, 1);//设置为1号为本月第一天
return DateUtil.beginOfDay(calstr.getTime());
}
/**
- 获得本月最后一天 23:59:59
*/
public static Date getCurrentMonthEndDay() {
String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
Calendar calstr = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
calstr.add(Calendar.MONTH, 0);//本月
calstr.set(Calendar.DAY_OF_MONTH, calstr.getActualMaximum(Calendar.DAY_OF_MONTH));//最后一天
return DateUtil.endOfDay(calstr.getTime());
}
/**
- 获得本周第一天 周日 00:00:00
*/
public static Date getCurrentWeekStartDay() {
String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
calendar.set(Calendar.DAY_OF_WEEK, 2);
return DateUtil.beginOfDay(calendar.getTime());
}
/**
- 获得本周最后一天 周六 23:59:59
*/
public static Date getCurrentWeekEndDay() {
String zoneId = ConfigPropertiesManager.getKey(“zoneGmt”);
TimeZone.setDefault(TimeZone.getTimeZone(zoneId));
//得到一个Calendar实例
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(zoneId));
cal.setTime(getCurrentWeekStartDay());
cal.add(Calendar.DATE, 6);
return DateUtil.endOfDay(cal.getTime());
}
/**
- 今天开始时间
- @return
*/
public static Long getTodayStartTime() {
return DateUtil.beginOfDay(new Date()).getTime();
}
/**
- 今天结束时间
- @return
*/
public static Long getTodayEndTime() {
return DateUtil.endOfDay(new Date()).getTime();
}