java计算2个日期之间有多少个星期。

不管当前时间是星期几。都计算在内。。

Java程序:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class Test15 {
public static void main(String[] args) {
try{
SimpleDateFormat farmatter = new SimpleDateFormat("yyyy-MM-dd");
Date d1, d2;
Scanner scan = new Scanner(System.in);

System.out.print("请输入两个日期(yyyy-MM-dd)\n");
System.out.print("日期1 : ");
d1 = farmatter.parse(scan.next());
System.out.print("日期2 : ");
d2 = farmatter.parse(scan.next());
int diff = dateDiff(d1, d2);
System.out.printf("%s 和 %s 之间相隔 %d 周\n", d1.toLocaleString(), d2.toLocaleString(), diff);
}
catch(Exception e){
e.printStackTrace();
}
}

public static int dateDiff(Date d1, Date d2) throws Exception {
long n1 = d1.getTime();
long n2 = d2.getTime();
long diff = Math.abs(n1 - n2);

diff /= 3600 * 1000 * 24;
if(diff % 7 != 0)
return (int)(diff / 7 + 1);
return (int)(diff / 7);
}
}

运行测试:
请输入两个日期(yyyy-MM-dd)
日期1 : 2011-1-1
日期2 : 2012-2-13
2011-1-1 0:00:00 和 2012-2-13 0:00:00 之间相隔 59 周
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-05-02
不管当前时间是星期几。都计算在内。。
是不是说不管是星期几,都算在这一周内。
比如开始时间是2012-02-01,那么2012-02-05 到 2012-02-11与开始时间都是间隔一周。
我是按这样的理解计算的。

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class TimeTest {

static long CONST_WEEK = 3600 * 1000 * 24 * 7;

public static void main(String[] args) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strBefore = "2012-02-01";
String strAfter = "2012-02-14";
Calendar before = Calendar.getInstance();
Calendar after = Calendar.getInstance();
before.setTime(sdf.parse(strBefore));
after.setTime(sdf.parse(strAfter));
int week = before.get(Calendar.DAY_OF_WEEK);
before.add(Calendar.DATE, -week);
week = after.get(Calendar.DAY_OF_WEEK);
after.add(Calendar.DATE, 7 - week);
int interval = (int) ((after.getTimeInMillis() - before
.getTimeInMillis()) / CONST_WEEK);
interval = interval - 1;
System.out.println(interval);
}
}追问

当前时间不满一周也算是一周。

追答

比如开始时间是2012-02-01,那么2012-02-05 到 2012-02-11与开始时间都是间隔一周。
那么2012-02-02 到 2012-02-04与 开始时间的间隔也是一周。
如果是这样,在
interval = interval - 1;
下边加上一个判断
if(interval ==0){
interval = 1;
}

本回答被提问者采纳
第2个回答  2012-02-13
把2个日期的时间戳值相减,差值转换天数,再除7直接得星期数。
import java.sql.Date;
public class Test {
static public void main(String argv[]){
long a=System.currentTimeMillis(),
b=a-3600L*1000*24*7*5;//5星期前
System.out.println(new Date(a));
System.out.println(new Date(b));
System.out.println("相差星期"+((a-b)/1000.0/3600/24/7));
;
}
}
=========
2012-02-13
2012-01-09
相差星期5.0