2022-09-26 14:52:34 +08:00
|
|
|
|
package com.engine.bjcj220907.utils;
|
|
|
|
|
|
|
2023-07-21 15:32:44 +08:00
|
|
|
|
import com.engine.salary.util.SalaryDateUtil;
|
|
|
|
|
|
|
2023-02-07 11:30:46 +08:00
|
|
|
|
import java.text.SimpleDateFormat;
|
2023-07-21 15:32:44 +08:00
|
|
|
|
import java.time.LocalDate;
|
2022-09-26 14:52:34 +08:00
|
|
|
|
import java.util.Calendar;
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @author Harryxzy
|
|
|
|
|
|
* @date 2022/09/26 13:55
|
|
|
|
|
|
* @description
|
|
|
|
|
|
*/
|
|
|
|
|
|
public class BjcjCommonUtils {
|
|
|
|
|
|
|
|
|
|
|
|
/***
|
|
|
|
|
|
* @description 获取当前calendar
|
|
|
|
|
|
* @return Calendar
|
|
|
|
|
|
* @author Harryxzy
|
|
|
|
|
|
* @date 2022/9/26 14:44
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static Calendar getNowCalendar(){
|
|
|
|
|
|
Date date = new Date();
|
|
|
|
|
|
Calendar cal = Calendar.getInstance();
|
|
|
|
|
|
cal.setTime(date);
|
|
|
|
|
|
return cal;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***
|
|
|
|
|
|
* @description 根据考勤所属月获取考勤开始日期
|
|
|
|
|
|
* @return Calendar
|
|
|
|
|
|
* @author Harryxzy
|
|
|
|
|
|
* @date 2022/9/14 21:57
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static Calendar getStartAttendanceCal(Date bonusMonth){
|
|
|
|
|
|
Calendar startAttendanceCal = Calendar.getInstance();
|
|
|
|
|
|
startAttendanceCal.setTime(bonusMonth);
|
|
|
|
|
|
startAttendanceCal.add(Calendar.MONTH,-1);
|
|
|
|
|
|
if(startAttendanceCal.getActualMaximum(Calendar.DAY_OF_MONTH) == 28){
|
|
|
|
|
|
// 2月只有28天的情况(从3.1开始)
|
|
|
|
|
|
startAttendanceCal.add(Calendar.MONTH, 1);
|
|
|
|
|
|
startAttendanceCal.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
|
|
|
startAttendanceCal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
|
|
|
startAttendanceCal.set(Calendar.MINUTE, 0);
|
|
|
|
|
|
startAttendanceCal.set(Calendar.SECOND, 0);
|
|
|
|
|
|
startAttendanceCal.set(Calendar.MILLISECOND, 0);
|
|
|
|
|
|
}else{
|
|
|
|
|
|
startAttendanceCal.set(Calendar.DAY_OF_MONTH, 29);
|
|
|
|
|
|
startAttendanceCal.set(Calendar.HOUR_OF_DAY, 0);
|
|
|
|
|
|
startAttendanceCal.set(Calendar.MINUTE, 0);
|
|
|
|
|
|
startAttendanceCal.set(Calendar.SECOND, 0);
|
|
|
|
|
|
startAttendanceCal.set(Calendar.MILLISECOND, 0);
|
|
|
|
|
|
}
|
|
|
|
|
|
return startAttendanceCal;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***
|
|
|
|
|
|
* @description 根据考勤所属月获取考勤结束日期
|
|
|
|
|
|
* @return Calendar
|
|
|
|
|
|
* @author Harryxzy
|
|
|
|
|
|
* @date 2022/9/14 21:57
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static Calendar getEndAttendanceCal(Date bonusMonth){
|
|
|
|
|
|
Calendar endAttendanceCal = Calendar.getInstance();
|
|
|
|
|
|
endAttendanceCal.setTime(bonusMonth);
|
|
|
|
|
|
endAttendanceCal.set(Calendar.DAY_OF_MONTH,28);
|
|
|
|
|
|
endAttendanceCal.set(Calendar.HOUR_OF_DAY, 23);
|
|
|
|
|
|
endAttendanceCal.set(Calendar.MINUTE, 59);
|
|
|
|
|
|
endAttendanceCal.set(Calendar.SECOND, 59);
|
|
|
|
|
|
endAttendanceCal.set(Calendar.MILLISECOND, 999);
|
|
|
|
|
|
return endAttendanceCal;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @description 获取2个时间段中有多少天
|
|
|
|
|
|
* @return Long
|
|
|
|
|
|
* @author Harryxzy
|
|
|
|
|
|
* @date 2022/9/11 20:12
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static int getDays(Date startDate,Date endDate) {
|
|
|
|
|
|
int days = (int)( (endDate.getTime() - startDate.getTime()) / (1000 * 60 * 60 * 24) + 1);
|
|
|
|
|
|
return days;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @description 判断某一天是否在某一个时间区间内
|
|
|
|
|
|
* @return Long
|
|
|
|
|
|
* @author Harryxzy
|
|
|
|
|
|
* @date 2022/9/11 20:12
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static boolean isBetween(Date now,Date startDate,Date endDate) {
|
|
|
|
|
|
if( (now.after(startDate) || now.equals(startDate)) && ( (now.before(endDate) || now.equals(endDate)) )){
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
2023-02-07 11:30:46 +08:00
|
|
|
|
|
|
|
|
|
|
public static boolean isBeforeMonth(Date a,Date b){
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
if(a == null || b == null){
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
2023-07-21 16:13:51 +08:00
|
|
|
|
// 如果入离职的日期>28 则属于下一个月
|
|
|
|
|
|
LocalDate bLocalDate = SalaryDateUtil.dateToLocalDate(b);
|
|
|
|
|
|
if(bLocalDate.getDayOfMonth() > 28){
|
|
|
|
|
|
LocalDate localDate = bLocalDate.plusMonths(1);
|
|
|
|
|
|
b = SalaryDateUtil.localDateToDate(localDate);
|
|
|
|
|
|
}
|
2023-02-07 11:30:46 +08:00
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
|
|
|
|
|
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
Date formatA = sdf.parse(sdf2.format(a));
|
|
|
|
|
|
Date formatB = sdf.parse(sdf2.format(b));
|
|
|
|
|
|
if( formatA.before(formatB) ){
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-07-21 15:32:44 +08:00
|
|
|
|
public static boolean isEqualsMonth(Date a,Date kqMonth){
|
2023-02-07 11:30:46 +08:00
|
|
|
|
|
|
|
|
|
|
try {
|
2023-07-21 15:32:44 +08:00
|
|
|
|
if(a == null || kqMonth == null){
|
2023-02-07 11:30:46 +08:00
|
|
|
|
return false;
|
|
|
|
|
|
}
|
2023-07-21 15:32:44 +08:00
|
|
|
|
// 如果入离职的日期>28 则属于下一个月
|
|
|
|
|
|
LocalDate aLocalDate = SalaryDateUtil.dateToLocalDate(a);
|
|
|
|
|
|
if(aLocalDate.getDayOfMonth() > 28){
|
|
|
|
|
|
LocalDate localDate = aLocalDate.plusMonths(1);
|
|
|
|
|
|
a = SalaryDateUtil.localDateToDate(localDate);
|
|
|
|
|
|
}
|
2023-02-07 11:30:46 +08:00
|
|
|
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
|
|
|
|
|
|
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
|
Date formatA = sdf.parse(sdf2.format(a));
|
2023-07-21 15:32:44 +08:00
|
|
|
|
Date formatB = sdf.parse(sdf2.format(kqMonth));
|
2023-02-07 11:30:46 +08:00
|
|
|
|
if( formatA.equals(formatB) ){
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-09-26 14:52:34 +08:00
|
|
|
|
}
|