统计全年的节假日 java


/**
* @ClassName: Days
* @Description: 将一年内的所有假日插入到假日表里
*  
*/
public class Holiday {
  public static void main(String[] args){
    //驱动程序名
     String driver = "com.mysql.jdbc.Driver";
     //要插入的数据库,表
     String url = "";  //数据库地址
     String user = ""; //用户名
     String password = "";//密码
     try {    
               //加载驱动程序
               Class.forName(driver);  
               //连续MySQL 数据库
               Connection conn = DriverManager.getConnection(url, user, password);
               if(!conn.isClosed())
               System.out.println("Succeeded connecting to the Database!");
               //statement用来执行SQL语句
               Statement statement = conn.createStatement();
               
               SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
               java.util.Date start = sdf.parse("2017-01-01");//开始时间
               java.util.Date end = sdf.parse("2017-12-31");//结束时间
               List<Date> lists = dateSplit(start, end);
               
               //-------------------插入周末时间---------------
               if (!lists.isEmpty()) {
                   for (Date date : lists) {
                       Calendar cal = Calendar.getInstance();
                        cal.setTime(date);
                       if(cal.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||cal.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY)
                       {
                           System.out.println("插入日期:" + sdf.format(date) + ",周末");
                           String insertSql = "INSERT INTO t_holiday (hol_name,hol_date) VALUES('周末','"+sdf.format(date)+"')";
                           statement.executeUpdate(insertSql);
                       }
                   }
               }
               
               //---------------插入节假日时间------------------
               List<Days> holidays = new ArrayList<Days>();
               holidays.add(new Days("元旦", sdf.parse("2017-01-01")));
               holidays.add(new Days("元旦", sdf.parse("2017-01-02")));
               
               holidays.add(new Days("春节", sdf.parse("2017-01-27")));
               holidays.add(new Days("春节", sdf.parse("2017-01-28")));
               holidays.add(new Days("春节", sdf.parse("2017-01-29")));
               holidays.add(new Days("春节", sdf.parse("2017-01-30")));
               holidays.add(new Days("春节", sdf.parse("2017-01-31")));
               holidays.add(new Days("春节", sdf.parse("2017-02-01")));
               holidays.add(new Days("春节", sdf.parse("2017-02-02")));
               
               holidays.add(new Days("清明节", sdf.parse("2017-04-02")));
               holidays.add(new Days("清明节", sdf.parse("2017-04-03")));
               holidays.add(new Days("清明节", sdf.parse("2017-04-04")));
               
               holidays.add(new Days("劳动节", sdf.parse("2017-04-29")));
               holidays.add(new Days("劳动节", sdf.parse("2017-04-30")));
               holidays.add(new Days("劳动节", sdf.parse("2017-05-01")));
               
               holidays.add(new Days("端午节", sdf.parse("2017-05-28")));
               holidays.add(new Days("端午节", sdf.parse("2017-05-29")));
               holidays.add(new Days("端午节", sdf.parse("2017-05-30")));
               
               holidays.add(new Days("国庆节、中秋节", sdf.parse("2017-10-01")));
               holidays.add(new Days("国庆节、中秋节", sdf.parse("2017-10-02")));
               holidays.add(new Days("国庆节、中秋节", sdf.parse("2017-10-03")));
               holidays.add(new Days("国庆节、中秋节", sdf.parse("2017-10-04")));
               holidays.add(new Days("国庆节、中秋节", sdf.parse("2017-10-05")));
               holidays.add(new Days("国庆节、中秋节", sdf.parse("2017-10-06")));
               holidays.add(new Days("国庆节、中秋节", sdf.parse("2017-10-07")));
               holidays.add(new Days("国庆节、中秋节", sdf.parse("2017-10-08")));
               for(Days day:holidays) {
                   //跟周末冲突的,不重复插入
                   String sql = "select count(1) as numbers from t_holiday where hol_date ='" + sdf.format(day.getDate()) + "'";
                   //结果集
                   ResultSet rs = statement.executeQuery(sql);
                   boolean hasRecord = false;
                   while(rs.next()) {
                       if(!"0".equals(rs.getString("numbers"))) {
                           hasRecord = true;
                       }
                   }
                   if(!hasRecord) {
                       System.out.println("插入日期:" + sdf.format(day.getDate()) + "," + day.getTitle());
                       String insertSql = "INSERT INTO t_holiday (hol_name,hol_date) VALUES('"+day.getTitle()+"','"+sdf.format(day.getDate())+"')";
                       statement.executeUpdate(insertSql);
                   }
                   else{
                       String updatesql = "update t_holiday set hol_name = '"+day.getTitle()+"' where hol_date = '" + sdf.format(day.getDate()) + "'";
                       statement.executeUpdate(updatesql);
                   }
               }
               
               
               //-------------- 剔除补班时间(周末需要补班的)---------------------
               List<Days> workDays = new ArrayList<Days>();
               workDays.add(new Days("补班", sdf.parse("2017-01-22")));
               workDays.add(new Days("补班", sdf.parse("2017-02-04")));
               workDays.add(new Days("补班", sdf.parse("2017-04-01")));
               workDays.add(new Days("补班", sdf.parse("2017-05-27")));
               workDays.add(new Days("补班", sdf.parse("2017-09-30")));
               
               for(Days day:workDays) {
                   System.out.println("剔除日期:" + sdf.format(day.getDate()) + "," + day.getTitle());
                   String delSql = "delete from t_holiday where hol_date ='" + sdf.format(day.getDate()) + "'";
                   statement.executeUpdate(delSql);
               }
               conn.close();
         }
      catch(ClassNotFoundException e) {
        System.out.println("Sorry,can't find the Driver!");
        e.printStackTrace();
       }
      catch(SQLException e) {
        e.printStackTrace();
      }
      catch(Exception e) {  
        e.printStackTrace();
       }
  }
 
  private static List<Date> dateSplit(java.util.Date start, Date end)
            throws Exception {
        if (!start.before(end))
            throw new Exception("开始时间应该在结束时间之后");
        Long spi = end.getTime() - start.getTime();
        Long step = spi / (24 * 60 * 60 * 1000);// 相隔天数

        List<Date> dateList = new ArrayList<Date>();
        dateList.add(end);
        for (int i = 1; i <= step; i++) {
            dateList.add(new Date(dateList.get(i - 1).getTime()
                    - (24 * 60 * 60 * 1000)));// 比上一天减一
        }
        return dateList;
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值