public class DateUtil {
private final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 按传输时间返回时间的下一天
* @param date 传输时间
* @param day 天数左右移动,0-返回当前天
* @return 下一天
*/
public static String getNextDay(Date date, int day){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.roll(Calendar.DAY_OF_YEAR,day);
return sdf.format(calendar.getTime());
}
/**
* 按传输时间返回时间的下一月
* @param date 传输时间
* @param month 月数左右移动,0-返回当前月
* @return 下一月
*/
public static String getNextMonth(Date date, int month){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.roll(Calendar.MONTH,month);
return sdf.format(calendar.getTime());
}
/**
* 按传输判断是否工作日
* @param date 传输时间
* @return 是否工作日
*/
public static boolean isWorkDate(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_WEEK);
if(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){
return false;
}
return true;
}
/**
* 按传输时间返回下一周的这一天
* @param month 周数左右移动,0-返回当前周
* @return 下一周
*/
public static String getNextWeek(Date date, int week){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.roll(Calendar.WEEK_OF_YEAR,week);
return sdf.format(calendar.getTime());
}
/**
* 按传输时间返每周工作日,过去工作日不返回
* @throws Exception
* @return 工作日
*/
public static List<String> getWorkDay(Date date, int week) throws Exception{
List<String> list =new ArrayList<String>();
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.roll(Calendar.WEEK_OF_YEAR,week);
if(week ==0){
int day = calendar.get(Calendar.DAY_OF_WEEK);
//是否工作日,是工作日的放入list集合放好
while(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){
list.add(sdf.format(calendar.getTime()));
calendar.roll(Calendar.DAY_OF_YEAR,1);
day = calendar.get(Calendar.DAY_OF_WEEK);
}
}else{
//获取下周一时间
calendar.roll(Calendar.WEEK_OF_YEAR,-1);
int weeks = calendar.get(Calendar.DAY_OF_WEEK);
if(weeks>2){
calendar.add(Calendar.DAY_OF_MONTH,-(weeks-2)+7);
}else{
calendar.add(Calendar.DAY_OF_MONTH,2-weeks+7);
}
//获取下周一至五工作日
list = getWorkDay(calendar.getTime(),0);
}
return list;
}
public static void main(String[] args) throws Exception {
//打印下一天
System.out.println("下一天:"+getNextDay(new Date(),1));
//打印下一月
System.out.println("下一月:"+getNextMonth(new Date(),1));
//打印是否工作日
System.out.println("是否工作日:"+isWorkDate(new Date()));
//打印下一周
System.out.println("下一周:"+getNextWeek(new Date(),1));
//打印每周工作日
System.out.println("每周工作日:");
List<String> list = getWorkDay(new Date(),4);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).toString());
}
}
private final static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 按传输时间返回时间的下一天
* @param date 传输时间
* @param day 天数左右移动,0-返回当前天
* @return 下一天
*/
public static String getNextDay(Date date, int day){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.roll(Calendar.DAY_OF_YEAR,day);
return sdf.format(calendar.getTime());
}
/**
* 按传输时间返回时间的下一月
* @param date 传输时间
* @param month 月数左右移动,0-返回当前月
* @return 下一月
*/
public static String getNextMonth(Date date, int month){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.roll(Calendar.MONTH,month);
return sdf.format(calendar.getTime());
}
/**
* 按传输判断是否工作日
* @param date 传输时间
* @return 是否工作日
*/
public static boolean isWorkDate(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int day = calendar.get(Calendar.DAY_OF_WEEK);
if(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){
return false;
}
return true;
}
/**
* 按传输时间返回下一周的这一天
* @param month 周数左右移动,0-返回当前周
* @return 下一周
*/
public static String getNextWeek(Date date, int week){
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.roll(Calendar.WEEK_OF_YEAR,week);
return sdf.format(calendar.getTime());
}
/**
* 按传输时间返每周工作日,过去工作日不返回
* @throws Exception
* @return 工作日
*/
public static List<String> getWorkDay(Date date, int week) throws Exception{
List<String> list =new ArrayList<String>();
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.roll(Calendar.WEEK_OF_YEAR,week);
if(week ==0){
int day = calendar.get(Calendar.DAY_OF_WEEK);
//是否工作日,是工作日的放入list集合放好
while(!(day == Calendar.SUNDAY || day == Calendar.SATURDAY)){
list.add(sdf.format(calendar.getTime()));
calendar.roll(Calendar.DAY_OF_YEAR,1);
day = calendar.get(Calendar.DAY_OF_WEEK);
}
}else{
//获取下周一时间
calendar.roll(Calendar.WEEK_OF_YEAR,-1);
int weeks = calendar.get(Calendar.DAY_OF_WEEK);
if(weeks>2){
calendar.add(Calendar.DAY_OF_MONTH,-(weeks-2)+7);
}else{
calendar.add(Calendar.DAY_OF_MONTH,2-weeks+7);
}
//获取下周一至五工作日
list = getWorkDay(calendar.getTime(),0);
}
return list;
}
public static void main(String[] args) throws Exception {
//打印下一天
System.out.println("下一天:"+getNextDay(new Date(),1));
//打印下一月
System.out.println("下一月:"+getNextMonth(new Date(),1));
//打印是否工作日
System.out.println("是否工作日:"+isWorkDate(new Date()));
//打印下一周
System.out.println("下一周:"+getNextWeek(new Date(),1));
//打印每周工作日
System.out.println("每周工作日:");
List<String> list = getWorkDay(new Date(),4);
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).toString());
}
}