/**
* 获取当月的工作日(国家规定补班的无法分辨,仅限周末和国家规定节假日除外)
* @author xujinbo
*/
public class WorkDaysUtil {
public static List<Date> getWorkDates(int year, int month) {
List<Date> dates = new ArrayList();
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DATE, 1);
while (cal.get(Calendar.YEAR) == year &&
cal.get(Calendar.MONTH) < month) {
int day = cal.get(Calendar.DAY_OF_WEEK);
if (!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)) {
Date clone = (Date)cal.getTime().clone();
dates.add(clone);
}
cal.add(Calendar.DATE, 1);
}
return dates;
}
/**
* 获取当前年
* @return
*/
public static int getYear(){
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
return year;
}
/**
* 获取当前月
* @return
*/
public static int getMonth(){
Calendar calendar = Calendar.getInstance();
//记得要+1
int month = calendar.get(Calendar.MONTH) + 1;
return month;
}
/**
* 改变date格式
* @param list
* @return
*/
public static Set<String> makeDateToString(List<String> list){
Set<String> set = new HashSet<>();
for (String date:list){
Date time = new Date(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateFormat = sdf.format(time);
set.add(dateFormat);
}
return set;
}
/**
* Date 当日最大时间
* @param date
* @return
*/
public static Date getDateMaxOrMin(Date date,String type){
Calendar calendar = DateUtils.toCalendar(date);
if("MAX".equals(type)) {
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));
calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));
date = calendar.getTime();
}
else{
calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMinimum(Calendar.HOUR_OF_DAY));
calendar.set(Calendar.MINUTE, calendar.getActualMinimum(Calendar.MINUTE));
calendar.set(Calendar.SECOND, calendar.getActualMinimum(Calendar.SECOND));
date = calendar.getTime();
}
return date;
}
/**
* Date转为LocalDate
* @param date
* @return
*/
public static LocalDate dateTOLocalDate(Date date){
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
return localDate;
}
//获取目标年份中目标月的第一天的开始时间
public static Date getFirstDayOfMonth(String year,String month) {
final Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,Integer.parseInt(year));
cal.set(Calendar.MONTH,Integer.parseInt(month)-1);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
//获取目标月和目标年份的当月第一天时间
final int start =Calendar.YEAR;
cal.set(Calendar.DAY_OF_MONTH, start);
return cal.getTime();
}
/**
* 获得本月第一天
* @return
*/
public static String getMonthfirstDay(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
String firstDay = sdf.format(calendar.getTime());
return firstDay;
}
/**
* //获得本月最后一天
* @return
*/
public static String getMonthLastDay(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
String lastDay = sdf.format(calendar.getTime());
return lastDay;