需求如下,在当前日期上减去两个工作日(周六周日不算工作日)
eg: 今天是星期一,是15号,我要的结果是上周三,11号。 求详细代码

解决方案 »

  1.   


            Calendar now = GregorianCalendar.getInstance();
            now.add(Calendar.DAY_OF_MONTH , -5);
            
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            
            System.out.println(sdf.format(now.getTime()));
            System.out.println(now.get(Calendar.DAY_OF_WEEK));
            System.out.println(now.get(Calendar.DAY_OF_MONTH));
      

  2.   

    递归,详细自己写Date d = get2workDayAgo(now, 2);public Date get2workDayAgo(Date today, int minus) {
       if (minus == 0)
           return today
       if (today is 周日 || today is 周六 || today is 法定假日) 
            return get2workDayAgo(today-1, minus)
       return get2workDayAgo(today - 1, minus - 1)
    }
      

  3.   

    public static Calendar[] calendarArray = new Calendar[]{上周三,上周四,上周五,周一,周二,周三,周四,周五,周六,周日};
    function(Calendar calendar) {
         if(周六 == calendar || 周日 == calendar) {
              return calendarArray[5];
         }
         return calendarArray[getCalendarIndexInArray(calendar)-2];
    }
      

  4.   


    public static Calendar[] calendarArray = new Calendar[]{上周三,上周四,上周五,周一,周二,周三,周四,周五,周六,周日};
    function(Calendar calendar) {
    if(周日 == calendar) {
    return calendarArray[5];
    }
    return calendarArray[getCalendarIndexInArray(calendar)-3];
    }刚贴错了,纠正一下~
      

  5.   


    public static void main(String args[]){
        final String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五","星期六" };
        Calendar calendar = Calendar.getInstance(); 
        Date date = new Date(); 
        calendar.setTime(date); 
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK)-1; 
        if(dayOfWeek <0)dayOfWeek=0; 
        System.out.println("Today is:"+dayNames[dayOfWeek]);
        if(dayNames[dayOfWeek].equals("星期日")||dayNames[dayOfWeek].equals("星期二")){
            calendar.add(Calendar.DAY_OF_MONTH, -3);
        }
        else if(dayNames[dayOfWeek].equals("星期一")){
            calendar.add(Calendar.DAY_OF_MONTH, -4);
        }
        else{
            calendar.add(Calendar.DAY_OF_MONTH, -2);
        }
        System.out.println(calendar.getTime());
      }    
    帮忙看看 这个行不行
      

  6.   

    Calendar today =  Calendar.getInstance();
    int week = today.get(Calendar.DAY_OF_WEEK);
    int rq = today.get(Calendar.DAY_OF_MONTH);
    //如果是周一、周二、周三,需要减去四天
    if(week==2 || week==3 || week==4){
    week = week-5;
    rq = rq-5;
    }
    //如果是周六,需要减去三天
    else if(week == 1){
    week = week-4;
    rq = rq-4;
    }else{
    week = week-3;
    rq = rq-3;
    }
    //如星期处理
    week= week<0?week+7:week;
    System.out.println("今天是" + rq + "号,星期" + (week-1));
      

  7.   


    public static void main(String[] args) {
    Date date=new Date();
    Calendar ca=Calendar.getInstance();
    ca.setTime(date);
    System.out.println(ca.get(Calendar.YEAR)+"-"+(ca.get(Calendar.MONTH)+1)+"-"+ca.get(Calendar.DAY_OF_MONTH));
            for(int i=0;i<2;){
             ca.add(Calendar.DAY_OF_MONTH, -1);
             if(ca.get(Calendar.DAY_OF_WEEK)!=7 && ca.get(Calendar.DAY_OF_WEEK)!=1)
             i++;
            }
            System.out.println(ca.get(Calendar.YEAR)+"-"+(ca.get(Calendar.MONTH)+1)+"-"+ca.get(Calendar.DAY_OF_MONTH));
    }
      

  8.   

    方法比较笨,直接判断,不过经过验证    Calendar today =  Calendar.getInstance();
        int week = today.get(Calendar.DAY_OF_WEEK);
         int rq = today.get(Calendar.DAY_OF_MONTH);
    //如果是周一、周二、周三,需要减去四天
    if(week==2 || week==3 || week==4){
    week = week-5;
    rq = rq-5;
    }
    //如果是周六,需要减去三天
    else if(week == 1){
    week = week-4;
    rq = rq-4;
    }else{
    week = week-3;
    rq = rq-3;
    }
    //如星期处理
    week= week<0?week+7:week;
    System.out.println("今天是" + rq + "号,星期" + (week-1));