今天去问老师题目,老师讲的我还没完全弄懂,就给我布置个题目。用面向对象的思想,编写一个程序,可以求出2个日期之间的天数,可以推算日期,可以判断是星期几。
一个下午都在思考这个问题,在度娘上也搜了不少,可是还是没有什么思路,请大虾们好好心,帮帮我,小弟我在线等候!!!!

解决方案 »

  1.   


    用的就是这些API
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;/** 商品促销日期计算 */
    public class SpecialDateDemo {
      public static void main(String[] args) 
        throws ParseException{
        String birth = "19860606"; // yyyyMMdd
        
        
        String str = "2011-9-20";
        SimpleDateFormat fmt = 
          new SimpleDateFormat("yyyy-MM-dd");
        Date date = fmt.parse(str);
        Date spec = special(date, 3);
        System.out.println(fmt.format(spec)); 
        
        //计算2012年的一月的第一个周末(周六)是几号?
        Calendar cal = new GregorianCalendar();
        //cal.add(Calendar.YEAR,  1);//明年
        cal.set(Calendar.YEAR, 2012);
        System.out.println(fmt.format(cal.getTime()));  
        cal.set(Calendar.MONTH, Calendar.JANUARY);
        System.out.println(fmt.format(cal.getTime()));  
        cal.set(Calendar.WEEK_OF_YEAR, 1);//第一个周
        cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
        System.out.println(fmt.format(cal.getTime()));  
      }
      /**
       *  商品促销日期计算    输入: 商品生产日期, 和保质期月份
       *  一般使用Calender类型计算(add set )
       * @param create 商品生产日期
       * @param months 保质期月份
       * @return 返回: 商品的促销日期, 是过期前两周周的周五
       */
      public static Date special(Date create, int months){
        Calendar cal = new GregorianCalendar();
        cal.setTime(create);//转换Date类型为Calender类型进行计算
        cal.add(Calendar.MONTH, months);//生产日期加保质期月数
        // 结果是 过期时间, add的本质操作是增加毫秒数
        cal.add(Calendar.WEEK_OF_YEAR, -2);//减少2周
        //set修改时间属性, 改到周五
        cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
        return cal.getTime();
      }
    }
      

  2.   

    一部分需要考虑是否闰年,每月的天数,判读,累计等等。其他的可以用API.楼上的可参考。