Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11989
  • 博文数量: 9
  • 博客积分: 290
  • 博客等级: 二等列兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-04 15:47
文章分类
文章存档

2009年(9)

我的朋友
最近访客

分类: Java

2009-08-09 22:51:32

这周有个任务,需要根据给出任务时间,任务完成天数,计算出任务结束时间,其中需要减去当中的节假日(有个节假日表,来存储节假日的日期,任务开始时间与完成天数均为业务流程表中的字段)。
主要思路:设计线程在后台跑,来计算完成任务的时间。
主要难点:时间类型的转换,判断一天是否为节假日,
下面的是大概的思路代码。
  
 
 
 

    long duration = 30;
        //将task对象中,在oracle数据库对应的日期开始时间取出,转换时间类型Timestamp-->java.util.Date

        DateFormat dateFormat;
        dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        String cDate=String.valueOf(Task[i].getCreateDate());
        java.util.Date createDate = dateFormat.parse(cDate);//util类型       
        //------------------做date数据类型转换-----------------------
        //结束日期加1,即从开始日期第二日计算
        Calendar cal = Calendar.getInstance();
        java.util.Date endDate = createDate;
        cal.setTime(endDate);
        cal.add(Calendar.DAY_OF_YEAR, 1);
        endDate.setTime(cal.getTime().getTime());
        int j=0;
        while(j<duration-1){
            while(Thread.isHoliday(endDate))//私有方法用来判断endDate是否为节假日

{                                
                cal.setTime(endDate);
                cal.add(Calendar.DAY_OF_YEAR, 1);
                endDate.setTime(cal.getTime().getTime());
            }
            cal.setTime(endDate);
            cal.add(Calendar.DAY_OF_YEAR, 1);
            endDate.setTime(cal.getTime().getTime());
            j++;
            
            if(j==duration-1){
                while(Thread.isHoliday(endDate)){                                    
                    cal.setTime(endDate);
                    cal.add(Calendar.DAY_OF_YEAR, 1);
                    endDate.setTime(cal.getTime().getTime());                                
                }
                //转换格式后,写到数据库中。

                DateFormat df;
                df = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");//设定格式

                dateFormat.setLenient(false);
                String tempendDate = String.valueOf(endDate);
                java.util.Date timeDate = dateFormat.parse(tempendDate);//util类型

                java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型

                
                log.info(Task[i]);
                if(Task[i]!=null){
                Task[i].setFinishPlanDate(dateTime);
                save(Task[i]);
                
                }

阅读(749) | 评论(0) | 转发(0) |
0

上一篇:StringTokenizer(字符串分析解析类型)(转)

下一篇:没有了

给主人留下些什么吧!~~