谁能帮忙解决这个DATE的问题,比较有挑战,急,谢谢!

maxttboy 2006-01-04 08:31:16
有一个员工的入职的时间是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
...全文
173 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
weinickli 2006-01-05
  • 打赏
  • 举报
回复
好好看看calendar类~~看好了解决这个问题是十分钟的事~~~
maxttboy 2006-01-05
  • 打赏
  • 举报
回复
非常感谢yingtju(蚂蚁),还有人可以帮忙吗?先谢谢了
yingtju 2006-01-05
  • 打赏
  • 举报
回复
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啊?
yuzl32 2006-01-05
  • 打赏
  • 举报
回复
数学题..
wangqi19820913 2006-01-05
  • 打赏
  • 举报
回复
Calendar.getInstance().add(Calendar.YEAR,n);
spiderman111 2006-01-04
  • 打赏
  • 举报
回复
up

--------------------------------
有尝聘用JAVA版主
详见:http//www.dvpx.com/forum.aspx
有兴趣的朋友加我QQ: 8502928 OR MSN:kekesoft@hotmail.com

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧