初始化工作日

/ 0条评论 / 0 个点赞 / 1263人阅读
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import com.centusoft.framework.core.util.BaseDao;
import com.centusoft.framework.core.util.UUIDGenerator;

public class testDate {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		testDate td = new testDate();
		td.showTime("2017-01-01", "2017-12-31");
	}

	public void showTime(String date1, String date2) {
		// 这里要判断第二个参数日期要比第一个参数日期大先继续运行
		GregorianCalendar gc = new GregorianCalendar();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		SimpleDateFormat holidaysdf = new SimpleDateFormat("MM-dd");
		// 工作日
		int workDay = 0;
		try {
			Date d1 = sdf.parse(date1);
			Date d2 = sdf.parse(date2);
			gc.setTime(d1);
			// System.out.println(sdf2.format(d1));
			long time = d2.getTime() - d1.getTime();
			long day = time / 3600000 / 24 + 1;
			// System.out.println(day);
			int ss=0;
			
			ResultSet rs=null;
			for (int i = 0; i < day; i++) {
				BaseDao baseDao = new BaseDao();
				PreparedStatement pstat=null;
				Connection conn=baseDao.getConn();
				String id=UUIDGenerator.generate();
				if (gc.get(GregorianCalendar.DAY_OF_WEEK) != GregorianCalendar.SATURDAY
						&& gc.get(GregorianCalendar.DAY_OF_WEEK) != GregorianCalendar.SUNDAY) {
					 System.out.println(sdf.format(gc.getTime()));
					if (!holidayList(holidaysdf.format(gc.getTime()))
							&& !holidayOfCN(sdf.format(gc.getTime()))){
						workDay++;
					}
					ss=0;
					pstat=conn.prepareStatement("insert into t_p_work_ribiao_definition"+
							 "(id, wdate, iswork, sort)"+
							 " values "+
							 "('"+id+"','"+sdf.format(gc.getTime())+"','"+ss+"',"+(731+i+1)+")");
				}else{
					ss=ss+1;
					pstat=conn.prepareStatement("insert into t_p_work_ribiao_definition"+
							 "(id, wdate, iswork, sort)"+
							 " values "+
							 "('"+id+"','"+sdf.format(gc.getTime())+"','"+ss+"',"+(731+i+1)+")");
					
					System.out.println(sdf.format(gc.getTime()));
				}
				int result=pstat.executeUpdate();
				// 天数加1
				gc.add(gc.DATE, 1);
				closeAll(conn, pstat, rs);
			}
			
			// gc.add(gc.DATE,1);
			// System.out.println(sdf.format(gc.getTime()));
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println(workDay);
	}
	
	//关闭所有
		public void closeAll(Connection conn,PreparedStatement pstat,ResultSet rs){
			if(rs!=null){
				try {
					rs.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(pstat!=null){
				try {
					pstat.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			
		}

	// 春节放假三天,定义到2020年
	public boolean holidayOfCN(String year) {
		List ls = new ArrayList();
		ls.add("2005-02-09");
		ls.add("2005-02-10");
		ls.add("2005-02-11");
		ls.add("2006-01-29");
		ls.add("2006-01-30");
		ls.add("2006-01-31");
		ls.add("2007-02-18");
		ls.add("2007-02-19");
		ls.add("2007-02-21");
		ls.add("2008-02-07");
		ls.add("2008-02-08");
		ls.add("2008-02-09");
		ls.add("2009-01-26");
		ls.add("2009-01-27");
		ls.add("2009-01-28");
		ls.add("2010-02-14");
		ls.add("2010-02-15");
		ls.add("2010-02-16");
		ls.add("2011-02-03");
		ls.add("2011-02-04");
		ls.add("2011-02-05");
		ls.add("2012-01-23");
		ls.add("2012-01-24");
		ls.add("2012-01-25");
		ls.add("2013-02-10");
		ls.add("2013-02-11");
		ls.add("2013-02-12");
		ls.add("2014-01-31");
		ls.add("2014-02-01");
		ls.add("2014-02-02");
		ls.add("2015-02-19");
		ls.add("2015-02-20");
		ls.add("2015-02-21");
		ls.add("2006-02-08");
		ls.add("2006-02-09");
		ls.add("2006-02-10");
		ls.add("2017-01-28");
		ls.add("2017-01-29");
		ls.add("2017-01-30");
		ls.add("2018-02-16");
		ls.add("2018-02-17");
		ls.add("2018-02-18");
		ls.add("2019-02-05");
		ls.add("2019-02-06");
		ls.add("2019-02-07");
		ls.add("2020-01-25");
		ls.add("2020-01-26");
		ls.add("2020-01-27");
		if (ls.contains(year))
			return true;
		return false;
	}

	// 法定假日,五一和国庆
	public boolean holidayList(String findDate) {
		List ls = new ArrayList();
		ls.add("05-01");
		ls.add("05-02");
		ls.add("05-03");
		ls.add("10-01");
		ls.add("10-02");
		ls.add("10-03");
		if (ls.contains(findDate))
			return true;
		return false;
	}
}

初始化工作日