有一个员工的入职的时间是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
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
有尝聘用JAVA版主
详见:http//www.dvpx.com/forum.aspx
有兴趣的朋友加我QQ: 8502928 OR MSN:[email protected]
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啊?