通过以下代码可以获取当前月的第一天和最后一天
public Map<String, Date> getCurrentMonthDays(Date date) {
Map<String, Date> map = new HashMap<>();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
map.put("beginDay", calendar.getTime());
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
map.put("endDay", calendar.getTime());
return map;
}
获取当前季度的第一天和最后一天
public static String[] getSeasonDay (Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(date);
int month = c.get(Calendar.MONTH);
Calendar startC = Calendar.getInstance();
startC.setTime(date);
int seasonStartMonthNum = (int) (Math.floor(month / 3.0) * 3);
startC.set(Calendar.MONTH, seasonStartMonthNum);
startC.set(Calendar.DAY_OF_MONTH, 1);
String seasonStartDateStr = sdf.format(startC.getTime());
Calendar endC = Calendar.getInstance();
endC.setTime(date);
int seasonEndMonthNum;
seasonEndMonthNum = seasonStartMonthNum + 2;
endC.set(Calendar.MONTH, seasonEndMonthNum);
endC.set(Calendar.DAY_OF_MONTH, endC.getActualMaximum(Calendar.DAY_OF_MONTH));
String seasonEndDateStr = sdf.format(endC.getTime());
return new String[]{seasonStartDateStr, seasonEndDateStr};
}
获取当前半年的第一天和最后一天
public static String[] getHalfYearDay (Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(date);
int month = c.get(Calendar.MONTH);
Calendar startC = Calendar.getInstance();
startC.setTime(date);
int halfStartMonthNum = (int) (Math.floor(month / 6.0) * 6);
startC.set(Calendar.MONTH, halfStartMonthNum);
startC.set(Calendar.DAY_OF_MONTH, 1);
String halfStartDateStr = sdf.format(startC.getTime());
Calendar endC = Calendar.getInstance();
endC.setTime(date);
int halfEndMonthNum;
halfEndMonthNum = halfStartMonthNum + 5;
endC.set(Calendar.MONTH, halfEndMonthNum);
endC.set(Calendar.DAY_OF_MONTH, endC.getActualMaximum(Calendar.DAY_OF_MONTH));
String halfEndDateStr = sdf.format(endC.getTime());
return new String[]{halfStartDateStr, halfEndDateStr};
}
获取当前年的第一天和最后一天
public static String[] getYearDay (Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(date);
Calendar startC = Calendar.getInstance();
startC.setTime(date);
startC.set(Calendar.MONTH, 0);
startC.set(Calendar.DAY_OF_MONTH, 1);
String halfStartDateStr = sdf.format(startC.getTime());
Calendar endC = Calendar.getInstance();
endC.setTime(date);
endC.set(Calendar.MONTH, 11);
endC.set(Calendar.DAY_OF_MONTH, endC.getActualMaximum(Calendar.DAY_OF_MONTH));
String halfEndDateStr = sdf.format(endC.getTime());
return new String[]{halfStartDateStr, halfEndDateStr};
}
获取当前周的第一天和最后一天
public static String[] getCurrentWeekTimeFrame (Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));
if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
calendar.add(Calendar.DAY_OF_YEAR, -1);
}
calendar.add(Calendar.DAY_OF_WEEK, -(calendar.get(Calendar.DAY_OF_WEEK) - 2));
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date startTime = calendar.getTime();
calendar.add(Calendar.DAY_OF_WEEK, 6);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
Date endTime = calendar.getTime();
return new String[]{sdf.format(startTime), sdf.format(endTime)};
}