eg.输入日期2004/8/31
DateFormat dateFormat =
DateFormat.getDateInstance(DateFormat.MEDIUM);
GregorianCalendar grc=new GregorianCalendar(2004, Calendar.AUGUST,31);// 周
grc.add(GregorianCalendar.DAY,7);
System.out.println("grc="+dateFormat.format(grc.getTime())); // 月
grc.add(GregorianCalendar.MONTH,1);
System.out.println("grc="+dateFormat.format(grc.getTime()));// 季度
grc.add(GregorianCalendar.MONTH,3);
System.out.println("grc="+dateFormat.format(grc.getTime()));// 半年
grc.add(GregorianCalendar.MONTH,6);
System.out.println("grc="+dateFormat.format(grc.getTime()));// 年
grc.add(GregorianCalendar.YEAR,1);
System.out.println("grc="+dateFormat.format(grc.getTime()));

解决方案 »

  1.   

    没有,要自己写...要看你的旬怎么算了,是15天算一旬,就grc.add(GregorianCalendar.DAY,15);还是别的什么样的计算方法.
      

  2.   

    周 grc=2004-12-7
     月 grc=2005-1-7
     季度 grc=2005-4-7
     半年 grc=2005-10-7
     年 grc=2006-10-7
    看了半天标题与运行结果,很不解,能否解释一下结果?
      

  3.   

    grc.add(GregorianCalendar.DAY,7);
    怎么提示 grc.add(GregorianCalendar.DAY,7);
    中的DAY未定义
      

  4.   

    标题:求一算法:输入一个日期,分别返回该日期的周、旬、半月、月、季度、半年、年的起止日期。
    这是题目,并没说"所在的",应该是题目没说清楚,OK...
    grc.add(GregorianCalendar.DAY,7);应该是DATE,手误,不好意思...
      

  5.   

    上次没看清题目,这次应该没问题了
    DateFormat dateFormat =
    DateFormat.getDateInstance(DateFormat.MEDIUM);
    // 2004/12/1
    GregorianCalendar grc=new GregorianCalendar(2004, Calendar.DECEMBER,1);
    // 得到今天星期几
    int week = grc.get(Calendar.DAY_OF_WEEK);
    // 所在周的起始日,起始日为星期一时8-week,星期日则7-week
    grc.add(GregorianCalendar.DATE,8-week);
    System.out.println("grc="+dateFormat.format(grc.getTime())); 
    // 所在周的终了日
    grc=new GregorianCalendar(2004, Calendar.DECEMBER,1);
    grc.add(GregorianCalendar.DATE,grc.getFirstDayOfWeek()-week);
    其余同理可得......
      

  6.   

    在对应起始日为星期一时,当设定时间为星期日时有点问题,修改如下
    DateFormat dateFormat =
    DateFormat.getDateInstance(DateFormat.MEDIUM);
    // 2004/12/1
    GregorianCalendar grc=new GregorianCalendar(2004, Calendar.DECEMBER,1);
    // 得到今天星期几
    int week = grc.get(Calendar.DAY_OF_WEEK);
    // 起始日为星期一时需要,起始日为星期日则不要
        if (week == 1) {
            week = week + 6;
        } else {
            week = week - 1;
        }
    // 所在周的起始日
    grc=new GregorianCalendar(2004, Calendar.DECEMBER,1);
    grc.add(GregorianCalendar.DATE,1-week);
    // 所在周的终了日
    grc.add(GregorianCalendar.DATE,7-week);
    System.out.println("grc="+dateFormat.format(grc.getTime())); 
      

  7.   

    //月的起始日,好像没有不是1号的吧,那就终了日了
    GregorianCalendar grc=new GregorianCalendar(2004, Calendar.DECEMBER,1);String[] month = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"};
    String[] day = {"31", "29", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31"};int iNowMonth = grc.get(Calendar.MONTH);
    if (iNowMonth == 2 && grc.isLeapYear(grc.get(Calendar.YEAR))) {
       day[1] = "28";
    }// 半月,假设以15为界
    int iNowDay = grc.get(Calendar.DATE);
    if (iNowDay > 15) {
        String lastDay = day[iNowMonth -1];
    } else {
        String lastDay = 15;
    }其余季度,半年,年(每年的起始终了日不一样吗?)同样写对应数组也可得到,也不复杂....