最好用Calendar类来实现,谢谢

解决方案 »

  1.   

    package com.baidu;import java.text.DateFormatSymbols;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.GregorianCalendar;
    public class Test {
        //输入一个月份,判断周数
     public static void main(String args[]) throws Exception{
       Calendar c_now = new GregorianCalendar();
       Calendar c_begin = new GregorianCalendar();
          Calendar c_end = new GregorianCalendar();
          DateFormatSymbols dfs = new DateFormatSymbols(); 
          String[] weeks = dfs.getWeekdays();
          
          //设置参数,年,月
          String date = "2010-5-5";
          SimpleDateFormat   df   =new   SimpleDateFormat("yyyy-M-d");  
             java.util.Date   cDate   =   df.parse(date);  
             c_now.setTime(cDate);
          int year=c_now.get(Calendar.YEAR);
          int month = c_now.get(Calendar.MONTH)+1;
          int[] days = {0,31,28,31,30,31,30,31,31,30,31,30,31};
          if (year % 4==0) days[2]=29;//大年
          c_begin.set(2010, month-1, 1); //月 0-11  天 0-
          c_end.set(2010, month-1, days[month]);      int count = 1;
          c_end.add(Calendar.DAY_OF_YEAR, 1);  //结束日期下滚一天是为了包含最后一天      
          while(c_begin.before(c_end)){
           System.out.println("第"+count+"周  日期:"+new java.sql.Date(c_begin.getTime().getTime())+", "+weeks[c_begin.get(Calendar.DAY_OF_WEEK)]);
           if(c_begin.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){
            count++;
           }
           c_begin.add(Calendar.DAY_OF_YEAR, 1);
          }
          System.out.println("共计(跨越):"+(count-1) +"周");
          
      } 
      }第1周  日期:2010-05-01, 星期六
    第1周  日期:2010-05-02, 星期日
    第2周  日期:2010-05-03, 星期一
    第2周  日期:2010-05-04, 星期二
    第2周  日期:2010-05-05, 星期三
    第2周  日期:2010-05-06, 星期四
    第2周  日期:2010-05-07, 星期五
    第2周  日期:2010-05-08, 星期六
    第2周  日期:2010-05-09, 星期日
    第3周  日期:2010-05-10, 星期一
    第3周  日期:2010-05-11, 星期二
    第3周  日期:2010-05-12, 星期三
    第3周  日期:2010-05-13, 星期四
    第3周  日期:2010-05-14, 星期五
    第3周  日期:2010-05-15, 星期六
    第3周  日期:2010-05-16, 星期日
    第4周  日期:2010-05-17, 星期一
    第4周  日期:2010-05-18, 星期二
    第4周  日期:2010-05-19, 星期三
    第4周  日期:2010-05-20, 星期四
    第4周  日期:2010-05-21, 星期五
    第4周  日期:2010-05-22, 星期六
    第4周  日期:2010-05-23, 星期日
    第5周  日期:2010-05-24, 星期一
    第5周  日期:2010-05-25, 星期二
    第5周  日期:2010-05-26, 星期三
    第5周  日期:2010-05-27, 星期四
    第5周  日期:2010-05-28, 星期五
    第5周  日期:2010-05-29, 星期六
    第5周  日期:2010-05-30, 星期日
    第6周  日期:2010-05-31, 星期一
    共计(跨越):5周
      

  2.   


    public static void getWeekDay(Date date) throws ParseException{
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM") ;
    String dateStr = dateFormat.format(date) ;
    int m = 31 ;
     for (int i = 1; i <= m; i++) {
     Date date2 = null ;
     String dateStr2 ="" ;
     if(i<10)
     dateStr2 =dateStr+"-0"+i;
     else
     dateStr2 =dateStr+"-"+i;
     
     date2 = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr2); 
     if(dateStr.equals(dateFormat.format(date2)))
     System.out.println(dateStr2+"__________"+new SimpleDateFormat("F").format(date2)+"_______"+new SimpleDateFormat("E").format(date2));
     
      }
       
    }看看是否有用