看Calender这个类,我做过时间太久了。

解决方案 »

  1.   

    Calender类看过了,它提供的方法太零碎,实现起来逻辑上太复杂了。
    哪位大侠有现成的?
      

  2.   

    Calendar c;
    ...
    for (...){
    c.add(7,c.DATE);
    ...
    }
      

  3.   

    这么惨!!
    HELP、HELP……
      

  4.   

    想要现成的东西肯定是没有的。本来Calender就是一个抽象的接口,你可以在WEEK_OF_MONTH filed,get(),set()方法基础上自己编算法写一个类实现这个接口。麻烦就麻烦一点,只要结构好就行了
      

  5.   

    有一个关键方法提示一下
    GregorianCalendar cal = new GregorianCalendar();
    int week = cal.get(java.util.Calendar.DAY_OF_WEEK) - 1;
      

  6.   

    import java.util.Date;
    import java.text.DateFormat ;
    public class MyClass1 {
      Date startdate,enddate;
      public static void main(String[] args) {
        MyClass1 myClass1 = new MyClass1();
        String strOut="";
        long t1=Date.UTC (new Integer(args[0].substring(0,4)).intValue()-1900,new Integer(args[0].substring(5,7)).intValue()-1,new Integer(args[0].substring(8,10)).intValue(),0,0,0);
        long t2=Date.UTC (new Integer(args[1].substring(0,4)).intValue()-1900,new Integer(args[1].substring(5,7)).intValue()-1,new Integer(args[1].substring(8,10)).intValue(),0,0,0);
        long tmpweeks=(t2-t1)/(3600*24*7*1000)+1;
        for(long i=1;i<=tmpweeks;i++){
         strOut="第"+new Integer((int)i).toString()+"周("+myClass1.printdate(new Date(t1))+"-----";
         while(((new Date(t1)).getDay()!=6) && (t1!=t2)){
          t1+=3600*24*1000;
         }
         strOut+=myClass1.printdate(new Date(t1))+")";
         System.out.println(strOut);
         t1+=3600*24*1000;
        }
      }
      public String printdate(Date date){
         String m=new Integer(date.getMonth()+1).toString();
         String d=new Integer(date.getDate()).toString();
         return m+"月"+d+"日";
      }
    }
      

  7.   

    给你一个类吧。返回一个哈希表,key 是“第1周”value对应是 xxx年XX月XX日- XXXX年XX月XX日
    你只要得到这个hashtable,至于如何显示,就在于你自己了,对吧。/**
    * 显示周计划表的类
    * 作者:sharetop([email protected])
    * 日期: 2001-8-16
    */import java.util.*;
    import java.text.*;
    public class STDateSeparator 
    {
    GregorianCalendar startDate = null;
    GregorianCalendar endDate = null;

    public STDateSeparator()
    {

    }

    public void setStartDate(int year,int month,int day)
    {
    startDate = new GregorianCalendar(year,month-1,day);
    }
    public void setEndDate(int year,int month,int day)
    {
    endDate = new GregorianCalendar(year,month-1,day);
    }

    /*取出有几个周
     res[0] 前余天数
     res[1] 周数
     res[2] 后余天数
             */
    public int[] getWeekCount()
    {
    int count = 0;
    int res[] = new int[3]; GregorianCalendar workDate = (GregorianCalendar)startDate.clone(); res[2]= endDate.get(Calendar.DAY_OF_WEEK);
    res[0] = 7-startDate.get(Calendar.DAY_OF_WEEK);

    workDate.add(Calendar.DATE,res[0]);

    while(workDate.before(endDate)){
    workDate.add(Calendar.DATE,7);
    count ++;
    }

    res[1]=count-1;
    return res;

    }

    /**
               取出一个周计划表
    */
    public Hashtable getWeeks()
    {
    int count = 0;
    Hashtable res = new Hashtable();

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
    GregorianCalendar workDate = (GregorianCalendar)startDate.clone();
    GregorianCalendar showDate;

    int first = startDate.get(Calendar.DAY_OF_WEEK);
    int last = endDate.get(Calendar.DAY_OF_WEEK);

    workDate.add(Calendar.DATE,0-first);

    while(workDate.before(endDate)){
    showDate = (GregorianCalendar)workDate.clone();
    showDate.add(Calendar.DATE,1);
    String s = sdf.format(showDate.getTime());
    workDate.add(Calendar.DATE,7);
    count ++;
    String e = sdf.format(workDate.getTime());
    res.put("第"+count+"周",s+"-"+e); }
    return res;
    }

    public Hashtable getMonths()
    {
    //同样方法实现
    return null;
    }

    }
      

  8.   


    再给你一个使用方法例子:/*
     * example of STDateSeparator
     */import java.util.*;
    import java.text.*;import com.sharetop.util.STDateSeparator;public class MyDate
    {

    public MyDate() {

    }

    public void show() throws ParseException { STDateSeparator separator = new STDateSeparator();
    separator.setStartDate(2001,8,16); // 开始日期
    separator.setEndDate(2001,9,4);   //结束日期

    int[] r = new int[3];
    r = separator.getWeekCount();
    for(int i=0;i<3;i++)
    System.out.println(r[i]);

    System.out.println(separator.getWeeks().toString());

    } public static void main(String args[]) 
    {
    System.out.println("Starting MyDate...");
    MyDate my = new MyDate();
    try{
    my.show();
    }catch(Exception ex){
    System.out.println(ex.getMessage());
    } }
    }
      

  9.   

    多谢sharetop(天生很笨)老兄,虽然还有一点小问题。