有两个日期,分别是string startDate = "2013-01-12";string stopDate = "2013-06-22";现需如下操作:
1.计算两个日期跨了多少周,跨年的情况也需要考虑进去;
2.把所跨周的每一周的最后一天(也就是周六)打印出来。----重要希望各位大神前来指点指点;感激不尽!javacalendar
1.计算两个日期跨了多少周,跨年的情况也需要考虑进去;
2.把所跨周的每一周的最后一天(也就是周六)打印出来。----重要希望各位大神前来指点指点;感激不尽!javacalendar
解决方案 »
- 菜鸟请教
- struts action跳转后加载flash的问题
- 求一个jsp在线播放falsh(swf)的小例子
- 一个关于引用的问题。急。。。。
- WEBLOGIC8.1下ORACLE连接池调用的问题,急!!!!
- 线程与数据源问题
- 如何解决Applet往servlet传递中文参数 并且可能包含等号(网上很多方法都尝试过)
- 急问:用jdbc与sqlserver连接时出现的问题?
- struts, validator问题,帮忙看看
- weblogic启动后无法访问控制台
- 求懂weblogic证书的大侠进
- 求助!java.net.ConnectException: Connection timed out: connect
一周7天都是固定的,还不好算?
* 计算时间差
*
* @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,循环走一遍就可以了
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);
}
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);
}
忽略了22号,这也是周未呀! 还有怎么打印出周未这一天??
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);
}
忽略了22号,这也是周未呀! 还有怎么打印出周未这一天??你自己执行一下不就知道了,所有周六都给你打印出来了,包括6月22日。
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);
}
忽略了22号,这也是周未呀! 还有怎么打印出周未这一天??你自己执行一下不就知道了,所有周六都给你打印出来了,包括6月22日。
早执行过了,你这只是判断跨了多少周,因为第一个条件根本就不成立
但是计算跨过多少周我觉得有问题,假设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));
}
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);
}
忽略了22号,这也是周未呀! 还有怎么打印出周未这一天??你自己执行一下不就知道了,所有周六都给你打印出来了,包括6月22日。
早执行过了,你这只是判断跨了多少周,因为第一个条件根本就不成立晕死!
这是我的执行结果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
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);
}
忽略了22号,这也是周未呀! 还有怎么打印出周未这一天??你自己执行一下不就知道了,所有周六都给你打印出来了,包括6月22日。
早执行过了,你这只是判断跨了多少周,因为第一个条件根本就不成立晕死!
这是我的执行结果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
呵呵,确实可以,估计是我这Eclipse的问题,换成myEclipse就可以了。