日期:2014-05-18  浏览次数:20871 次

Calendar计算日期
有两个日期,分别是string startDate = "2013-01-12";string stopDate = "2013-06-22";

现需如下操作:
1.计算两个日期跨了多少周,跨年的情况也需要考虑进去;
2.把所跨周的每一周的最后一天(也就是周六)打印出来。----重要

希望各位大神前来指点指点;感激不尽!
java calendar

------解决方案--------------------
用Calendar循环,周六的打印出来不就完了,
一周7天都是固定的,还不好算?
------解决方案--------------------
关注此贴,我也是新手。

不知道Java有相关的时间计算类否。
------解决方案--------------------
/**
* 计算时间差

* @param beginTime
*            开始时间,格式:yyyy-MM-dd HH:mm:ss
* @param endTime
*            结束时间,格式:yyyy-MM-dd HH:mm:ss
* @return 从开始时间到结束时间之间的时间差(秒)
*/
public static long getTimeDifference(String beginTime, String endTime) {
  long between = 0;
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

   Date end = null;
   Date begin = null;
  try {// 将截取到的时间字符串转化为时间格式的字符串
    end = sdf.parse(endTime);
    begin = sdf.parse(beginTime);
   } catch (ParseException e) {
    e.printStackTrace();
   }

   between = (end.getTime() - begin.getTime()) / 1000;// 除以1000是为了转换成秒

  return between;
}


返回的是秒,换成周就简单了。
要打印周6,循环走一遍就可以了
------解决方案--------------------
引用:
自己先顶下了



private static void print() {

Calendar calStart = Calendar.getInstance();
calStart.set(2013, 0, 12);
Calendar calEnd = Calendar.getInstance();
calEnd.set(2013, 5, 22);
int days = 0;
while (true) {
days++;
if (calStart.get(Calendar.DAY_OF_WEEK) == 7) {
System.out.println(calStart.get(Calendar.YEAR) + "-" + (calStart.get(Calendar.MONTH) + 1) + "-" + calStart.get(Calendar.DATE));
}
calStart.add(Calendar.DAY_OF_YEAR, 1);
if (calStart.after(calEnd)) {
break;
}
}
System.out.println("weeks : " + days / 7);
}

------解决方案--------------------
5L的周六的打印是正确的,
但是计算跨过多少周我觉得有问题,假设2013-6-20到2013-6-24,实质上这已经跨过一周了。
另外,对于跨年,计算和跨周差不多,在5L的基础上,循环内days++后判断calStart.get(Calendar.DAY_OF_YEAR)==1且days>0,跨年数加1.


输入公历的某年某月某日,相应的计算出这一天是星期几
至于这个更简单了,直接