<a href="" id="preday">上一天</a> <a href="<%=basePath%>pages/zhbg/rc/powerdata/RCList2.jsp?q_FBSJ=<%=new TimeUtil().getToday()%>" id="today">今天</a> <a href="<%=basePath%>pages/zhbg/rc/powerdata/RCList2.jsp?q_FBSJ=<%=new TimeUtil().PreOrNextDay("+")%>" id="nextday">下一天</a> <script type="text/javascript"> var url="<%=basePath%>pages/zhbg/rc/powerdata/RCList2.jsp?q_FBSJ="; document.getElementById("preday").href=url+PreOrNextDay("-"); </script>
这是一个测试页面。
参数q_FBSJ是一个日期值,用于向数据库中查询对应日期的数据。
刚开始的时候,本来打算用java的日期方法来控制参数,来得到上一天,今天,下一天的数据。但是我发现一个问题是即使不点击,上一天,下一天。
上一天和下一天对应的参数值也会变。
所以我就打算用javascript来控制日期参数,但是问题又出来了。每次点击上一天之后,相当于重新刷新了一次页面(因为向数据库请求了数据。),刷新页面之后,javascript的日期值又变回原样了。也就是说只能用“上一天”看到昨天的数据(始终是昨天的数据,因为参数一直不变),而看不到前天和大前天的数据。
我的javascript日期值是全局变量,在单页面上测试没问题,参数是一直变的。
下面是单页面的内容。(不重要的代码没有写上)
<html> <head> <script type="text/javascript"> var currDT = new Date(); //增加或减少一天,由ope决定, + 为加,- 为减,否则不动 function PreOrNextDay(ope) { var num = 0; if (ope == "-") { num = -1; } else if (ope == "+") { num = 1; } var y = currDT.getYear();//年 var m = currDT.getMonth();//月 var lastDay = getLastDay(y, m); //每个月是多少天 var d = currDT.getDate();//日 d += num; if (d < 1) { m--; if (m < 0) { y--; m = 11; } d = getLastDay(y, m); } else if (d > lastDay) { m++; if (m > 11) { y++; m = 0; } d = 1; } currDT.setYear(y); currDT.setMonth(m); currDT.setDate(d); alert(currDT); return currDT; } </script> </head> <body> <!--加载时初始页面--> <script type="text/javascript"> </script> <a href="javascript:void(0)" onclick="addOneDay('+')">add</a> <a href="javascript:void(0)" onclick="addOneDay('-')">dep</a> </body> </html>
我说用Java计算日期是这样的
你只需要传入currDT和flag(前一天\后一天)比如 2011-3-20
然后一个Java方法获得在currDT基础上的前一天 2011-3-19
接着查询数据,同时currDT变为2011-3-19,保存到页面
request.setAttribute("",currDT);
这个时候,页面的currDT是2011-3-19
你再点击前一天,传入后台的currDT就是 2011-3-19 前一天就是 2011-3-18
返回前台的currDT就是 2011-3-18
后一天同理
查询今天,直接做另一个数据查询方法
js也一样
页面始终要返回一个后台查询数据的日期作为currDT
比如,初始查询的时候 currDT=2011-3-20
点击前一天,js得到 2011-3-19 传递到后台 ,后台查询数据 并保存currDT=2011-3-19
到页面,页面点击后一天,js得到 2011-3-20 传递到后台查询
不知道楼主怎么理解的
给个思路
无论你用java控制日期还是js控制日期
指定一个当前日期 currDay ,这个有别于今天
在当前日期上来处理上一天,下一天
如果用java控制日期,初始查询的时候,currDay等于今天
每次服务端查询currDay都会变化,而且需要把currDay传递到客户端
客户端请求服务端查询传入currDay
例如:
今天是2011-3-19
初始查询传递参数 currDay=2011-3-19
服务端处理查询后,将currDay传递到客户端
此时,客户端点击前一天,那么java处理日期是在2011-3-19上来得到前一天的日期值2011-3-18,然后做查询,同时,currDay变为2011-3-18,传递到客户端
始终以作查询的日期作为currDay,如果要查询今天,那就获取系统当期日期
不知道我是否理解了lz的需求