1.根据两个时间段判断是否为一年 格式(20230206-20240205)
public Boolean checkYear(Date date1, Date date2){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = new GregorianCalendar();
calendar.setTime(date1);
calendar.add(Calendar.YEAR, 1);
calendar.add(Calendar.DATE, -1);
if (ToolUtil.equals(dateFormat.format(date2),dateFormat.format(calendar.getTime()))){
return true;
}else{
return false;
}
}
2. 根据两个时间校验是否为一个月 格式(20230206-20230305)
public Integer checkMonth(Date date1, Date date2){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calendar = new GregorianCalendar();
calendar.setTime(date1);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DATE, -1);
if (ToolUtil.equals(dateFormat.format(date2),dateFormat.format(calendar.getTime()))){
return 1;
}else{
return 0;
}
}
3. 根据两个时间计算月份(不足30天按一个月)
public Integer calculateContractPeriod(Date date1, Date date2){
if (ToolUtil.isEmpty(date1)||ToolUtil.isEmpty(date2)){
return 0;
}
long days = ((date2.getTime() - date1.getTime()) / (1000*3600*24))+1;
if (days<=30){
return 1;
}else{
Calendar calendar = new GregorianCalendar();
calendar.setTime(date2);
calendar.add(Calendar.DATE, 1);
date2 = calendar.getTime();
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(date1);
c2.setTime(date2);
if (c2.getTimeInMillis() < c1.getTimeInMillis()) return 0;
int year1 = c1.get(Calendar.YEAR);
int year2 = c2.get(Calendar.YEAR);
int month1 = c1.get(Calendar.MONTH);
int month2 = c2.get(Calendar.MONTH);
int day1 = c1.get(Calendar.DAY_OF_MONTH);
int day2 = c2.get(Calendar.DAY_OF_MONTH);
int yearInterval = year2 - year1;
if (month2 < month1 || month1 == month2 && day2 < day1) yearInterval--;
int monthInterval = (month2 + 12) - month1;
if (day2 < day1) monthInterval--;
monthInterval %= 12;
int moresu = yearInterval * 12 + monthInterval;
return moresu;
}
}
4. 获取当前时间N天后的时间(字符串)
public String getAfterDayDate(String days) {
int daysInt = Integer.parseInt(days);
Calendar canlendar = Calendar.getInstance();
canlendar.add(Calendar.DATE, daysInt);
Date date = canlendar.getTime();
SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdfd.format(date);
return dateStr;
}
5.获取N天以后是周几
public static String getAfterDayWeek(String days) {
int daysInt = Integer.parseInt(days);
Calendar canlendar = Calendar.getInstance();
canlendar.add(Calendar.DATE, daysInt);
Date date = canlendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("E");
String dateStr = sdf.format(date);
return dateStr;
}
6. 获取当前时间的周一和周日的日期
public Map<String,String> getWeekDate(Date date) {
Map<String,String> map = new HashMap();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(date);
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);
map.put("sundayDate", weekEnd);
return map;
}