节假日 java"/>
统计全年的节假日 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;
}
}
更多推荐
统计全年的节假日 java
发布评论