java计算两个日期的旬差?

来源:百度知道 编辑:UC知道 时间:2024/05/23 00:36:38
例如:2006年6月28日 到2007年3月3日差几旬 以前的朋友给答案是先计算出时间差然后除以10,这样算法显然不对。我本人想到了算法就是不知道怎么编程 请高手帮忙,步骤如下:1.先做年减得数*10*3 2.再做月减 减的结果如果是正的那么年减有效 如果是负的年做减结果肯定无效 然后考虑差几个月 月计算不能简单做减 需要计算出差几个月份然后*3 3.日是最复杂的需要判断日期在几旬 然后考虑多种情况。例如2月28日到3月2日这个是差2旬 高手门请帮我 不胜感激,我们公司的竞赛题目,关系到我能不能提升职位的问题,谢谢各位。

虽然这个问题已经过去很长时间了,但我还是要回复一下,希望能够帮到其他人。
我目前想到的一个办法是这样的:
for (int j = 1; j <= 5; j++) {
//取得最近5个旬度的时间,从当前旬的上一旬开始往前推算
Date curDate = new Date();
int a = -1;//设置已循环的次数(因为要排除掉当前旬,所以从-1开始,否则从0开始)
if(curDate.getDate()==1 || curDate.getDate()==11 || curDate.getDate()==21){
//如果当前时间已经是1日、11日或21日,则视为已经排除掉当前旬
a++;
}
while(true){
//从当前日期开始,逐天相减,每遇到1日、11日、21日,循环次数+1(视为已计算该旬度),
curDate.setDate(curDate.getDate()-1);
if(curDate.getDate()==1 || curDate.getDate()==11 || curDate.getDate()==21){
//如果当前时间已经是1日、11日或21日,则视为已经排除掉当前旬
a++;
if(a==j){
//如果找到了目标旬度,则跳出循环
break;
}
}
}
String sdfXdStr = "";
if(curDate.getDate()==1){
sdfXdStr = "yyyy年M月上旬";
}else if(curDate.getDate()==11){
sdfXdStr = "yyyy年M月中旬";
}else if(curDate.getDate()==21){
sdfXdStr = "yyyy年M月下旬";
}
SimpleDateFormat sdf = new SimpleDateFormat(sdfXdStr);