比如:当前时间是2011-01-06,返回得到:2011-01-16 ,不过要去除节假日,和周六日(比如只是个说明,2011-01-16不是正确时间)找了些资料,知道应该在数据库中创建节日表,表信息如下:  type        date     id  name
"法定假日","2011-04-03",1,"清明节"
"法定假日","2011-04-04",2,"清明节"
"法定假日","2011-04-05",3,"清明节"
"法定假日","2011-04-30",4,"劳动节"
"法定假日","2011-05-01",5,"劳动节"
"法定假日","2011-05-02",6,"劳动节"
"法定假日","2011-06-04",7,"端午节"
"法定假日","2011-06-05",8,"端午节"
"法定假日","2011-06-06",9,"端午节"
"法定假日","2011-09-10",12,"中秋节"
"法定假日","2011-09-11",13,"中秋节"
"法定假日","2011-09-12",14,"中秋节"
"法定假日","2011-10-07",17,"国庆节"
"法定假日","2011-10-06",18,"国庆节"
"法定假日","2011-10-05",19,"国庆节"
"法定假日","2011-10-04",20,"国庆节"
"法定假日","2011-10-03",21,"国庆节"
"法定假日","2011-10-02",22,"国庆节"
"法定假日","2011-10-01",23,"国庆节"
"调休","2011-10-09",24,"国庆节"
"调休","2011-10-08",25,"国庆节"
"法定假日","2011-01-01",26,"元旦"
"法定假日","2011-01-02",27,"元旦"
"法定假日","2011-01-03",28,"元旦"
"法定假日","2011-02-02",29,"春节"
"法定假日","2011-02-03",30,"春节"
"法定假日","2011-02-04",31,"春节"
"法定假日","2011-02-05",32,"春节"
"法定假日","2011-02-06",33,"春节"
"法定假日","2011-02-07",34,"春节"
"法定假日","2011-02-08",35,"春节"
"调休","2011-01-30",36,"春节"
"调休","2011-02-12",37,"春节"
"调休","2011-04-02",38,"清明节"求方法代码怎么实现,注意"调休

解决方案 »

  1.   

    好在是后10天,逐一遍历数一数就OK了。明天是节假日吗?数据库查查,是,计数器不增1,否,增1,增到10后就OK了
      

  2.   

    这个用存储过程做比较合适,一句sql搞不定.
    用程序也行,
    思路是:把你的这张表的日期全部读到一个HashMap.
    然后从起始日期开始,一天天加.加一天去hashmap get一下看看是不是,如果不是就总天数(10天)减1.
    就这样一直到总天数为0.
      

  3.   

    修改一下下面的程序,基本上就可以了,主要是思想
    import java.text.SimpleDateFormat;
    import java.util.GregorianCalendar;public class Test {
        public static void main(String[] args) {
            SimpleDateFormat fomatter = new SimpleDateFormat("yyyy-MM-dd"); // 自己定义转换后的日期格式
            GregorianCalendar calendar = new GregorianCalendar();        for (int count = 0; count < 30;) {
                calendar.add(GregorianCalendar.DAY_OF_MONTH, 1);
                int dow = calendar.get(GregorianCalendar.DAY_OF_WEEK);            // 是周末
                if (dow == 1 || dow == 7) {
                    System.out.println(fomatter.format(calendar.getTime()) + ((dow == 1) ? ": 周日" : ": 周六"));
                    continue;
                }            String dateString = fomatter.format(calendar.getTime());
                // 与节日表判断一下,如果是,则continue
                System.out.println(dateString);            ++count;
            }
        }
    }
      

  4.   

    终于解决,感谢上面几位的思路,把代码贴出来 JDBC连接数据库的// 根据当前时间返回去除节假日,和周六日的后10天的时间
     public String lastbinding(int sum) {

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Date now = new Date();
    ArrayList list1=new ArrayList();
    ArrayList list2=new ArrayList();
    try {
        conn=new ConnectDB().getConn();
        String sql="select type,date from zjcf_holiday";
    pstmt=conn.prepareStatement(sql);
    rs=pstmt.executeQuery();
    while(rs.next()){
    list1.add(rs.getString("type"));
    list2.add(rs.getString("date"));
    }

    //System.out.println(list1.get(2)+"  "+list2.get(1));
    sum=sum+1;
    while(sum>0){
    if((now.getDay()!=0) && (now.getDay()!=6)){
    sum--;
    //System.out.println(list1.size());
    for(int i=0;i<list1.size();i++){
    if((list1.get(i).equals("法定假日"))&&(df.format(now).equals(list2.get(i))))
    {
    sum++;
    }
    }
    }else{
    for(int i=0;i<list1.size();i++){
    if((list1.get(i).equals("调休"))&&(df.format(now).equals(list2.get(i))))
    {
    sum--;
    }
    }
    }
    if(sum>0){
    now.setDate(now.getDate()+1);
    }
    System.out.println(sum+" "+df.format(now));
    }

    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    try {
    if(rs!=null)
    rs.close();
    if( pstmt != null )
    pstmt.close();
    if( conn != null )
    conn.close();
    } catch (SQLException e) {

    e.printStackTrace();
    }
    }
    //System.out.println(df.format(now));
    return df.format(now);
    }
     
    public static void main(String[] args) {
    OperKehu oper=new OperKehu();
    oper.lastbinding(10);
    }