有一个员工的入职的时间是2002/08/15  ,如何用JAVA写这样一段代码,取当前时间,如果当前时间是xxxx-xx-xx,如何可以得到n和该员工的有效时间,可以满足这个条件:  
           2002+n/08/15<xxxx-xx-xx<2002+n+1/08/15  
        例如:  
           如果今天是2005-07-15,那么n=2,该员工的有效时间是2004-08-15  到2005-08-15  
           如果今天是2005-09-15,那么n=3,该员工的有效时间是2005-08-15  到2006-08-15

解决方案 »

  1.   

    up--------------------------------
    有尝聘用JAVA版主
    详见:http//www.dvpx.com/forum.aspx
    有兴趣的朋友加我QQ: 8502928 OR MSN:[email protected]
      

  2.   

    好好看看calendar类~~看好了解决这个问题是十分钟的事~~~
      

  3.   

    Calendar.getInstance().add(Calendar.YEAR,n);
      

  4.   

    import java.sql.Date;
    import java.text.SimpleDateFormat;
    public class Test
    {
    public static void main(String[] args) {
    long oneDay = 24*3600*1000;
    long oneYear = oneDay*365; Date date = Date.valueOf("2003-08-15");
    long validBegin = date.getTime();
    long validEnd = validBegin + oneYear;
    long now = new java.util.Date().getTime();
    int n=0;

    while(validEnd<now) {
    n++;
    validEnd += oneYear;
    }
    Date d1 = new Date(validEnd - oneYear);
    Date d2 = new Date(validEnd); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(n);
    System.out.println(df.format(d1));
    System.out.println(df.format(d2));
    }
    }补充:
    1.没考虑闰年,楼主自己加吧
    2.我在写的时候本来用365*24*3600*1000表示1年,但实际结果只有10几天,想了想是因为
    上述式子可能是先存到int, 在转化成了long, 故超出了int的存储范围,大家一般怎么将
    类似的算术表达式赋值给long啊?
      

  5.   

    非常感谢yingtju(蚂蚁),还有人可以帮忙吗?先谢谢了