本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
- 时间:2022.5.27
- 内容:
- 业务中偶尔使用到的方法。
- DateUtils里的方法。
- 备注:
- RuoYi有一个自带的DateUtils的时间格式化方法,这里记录一下我自己常用的和新增的一些。
1 format
这里有个很妙的地方~
- MM dd HH mm如果换成了单个,那么遇上0几这种数字的时候,会自动消零。
- 大写的H是24小时制,小写的h是12小时制。
- 一般来说,分钟还是需要两位数的。下面显示的是最为常用的格式:
SimpleDateFormat f = new SimpleDateFormat("yyyy.M.d H:mm");
String duringTime = "";
duringTime += f.format(s.getBeginTime()); //开始时间
duringTime += "-";
duringTime += f.format(s.getEndTime()); //结束时间
map.put("during_time",duringTime);
2 获取指定时间是不是在指定时间区间内的
/**
* 获取指定时间是不是在指定时间区间内的
* @param test
* @param begin
* @param end
* @return java.lang.Boolean
*/
public static Boolean getIsInTime(Date test,Date begin,Date end){
Time testTime = new Time(0,0,0);
Time beginTime = new Time(0,0,0);
Time endTime = new Time(0,0,0);
beginTime.setHours(begin.getHours());
beginTime.setMinutes(begin.getMinutes());
beginTime.setSeconds(begin.getSeconds());
endTime.setHours(end.getHours());
endTime.setMinutes(end.getMinutes());
endTime.setSeconds(end.getSeconds());
testTime.setHours(test.getHours());
testTime.setMinutes(test.getMinutes());
testTime.setSeconds(test.getSeconds());
if(testTime.after(beginTime) && testTime.before(endTime)){
return true;
}
return false;
}
3 获取指定时间段是不是在指定时间区间内的
/***
* 获取指定时间段是不是在指定时间区间内的
* @param startDateOne 第一个时间段的开始时间
* @param endDateOne 第一个时间段的结束时间
* @param startDateTwo 第二个时间段的开始时间
* @param endDateTwo 第二个时间段的结束时间
* @return
*/
public static Boolean IsInterSection(Date startDateOne,Date endDateOne,Date startDateTwo,Date endDateTwo)
{
Date maxStartDate = startDateOne;
if(maxStartDate.before(startDateTwo))
{
maxStartDate = startDateTwo;
}
Date minEndDate = endDateOne;
if(endDateTwo.before(minEndDate))
{
minEndDate = endDateTwo;
}
if(maxStartDate.before(minEndDate) || (maxStartDate.getTime() == minEndDate.getTime()))
{
return true;
}
else {
return false;
}
}
3 获取两个日期的日期差,忽略时间
/**
* 获取两个日期的日期差,忽略时间
* @param d1
* @param d2
* @return 取得差距天数
*/
public static Long getDateDates(Date d1,Date d2){
Long starTime=d1.getTime();
Long endTime=d2.getTime();
Long num=endTime-starTime;//时间戳相差的毫秒数
return num/24/60/60/1000;
}
4 获取两个时间的时间差,忽略日期
/**
* 获取两个时间的时间差,忽略日期
* @param begin
* @param end
* @return 取得秒
*/
public static int getDateSeconds(Date begin,Date end){
Time rs = new Time(0,0,0);
rs.setHours(end.getHours()-begin.getHours());
rs.setMinutes(end.getMinutes()-begin.getMinutes());
rs.setSeconds(end.getSeconds()-begin.getSeconds());
return rs.getHours()*60*60+rs.getMinutes()*60+rs.getSeconds();
}