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.
输入公历的某年某月某日,相应的计算出这一天是星期几
至于这个更简单了,直接
public static void main(String[] arg) throws Exception
{
Calendar cal = Calendar.getInstance();
// 2013年6月20
cal.set(2013, 5, 20);
System.out.println(cal.getTime());
System.out.println("今天是星期" + (cal.get(Calendar.DAY_OF_WEEK) - 1));
}
[解决办法]
晕死!
这是我的执行结果。。。
2013-1-12
2013-1-19
2013-1-26
2013-2-2
2013-2-9
2013-2-16
2013-2-23
2013-3-2
2013-3-9
2013-3-16
2013-3-23
2013-3-30
2013-4-6
2013-4-13
2013-4-20
2013-4-27
2013-5-4
2013-5-11
2013-5-18
2013-5-25
2013-6-1
2013-6-8
2013-6-15
2013-6-22
weeks : 23