需求是因为要做一个日期联动
通过日期控件的选择的日期值通过调用axjx传值到后台
前台文本框:
<input id="contractBdate" name="contractBdate" type="text" style="width: 150px"
class="Wdate" onClick="WdatePicker({readOnly:true,onpicked:function(dp) {contractdate(dp)}})">
(文本框用到的时间控件DatePicker:http://www.my97.net/dp/demo/resource/main.asp )
js事件:
function contractdate(dp){
var y=$dp.cal.getP('y');
var m=$dp.cal.getP('M');
var d=$dp.cal.getP('d');
debugger;
var url="contractController.do?threedata&y="+y+"&m="+m+"&d="+d;
$.ajax({
type:'post',
url:url,
//data:tdata,
dataType:'json',
timeout:5000,
success:function(threetime){
$('#contractEdate').val(threetime);
}
});
}
后台
@ResponseBody
@RequestMapping(params = "threedata")public String threedata(HttpServletRequest req,String y,String m,String d) {
Format f = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, Integer.parseInt(y));
c.set(Calendar.MONDAY,Integer.parseInt(m)-1);
c.set(Calendar.DATE,Integer.parseInt(d));
System.out.println("获取的日期:"+f.format(c.getTime()));
//3年 应该是3年的今天,减去一天,而不是在年上直接+3
c.add(Calendar.YEAR, 3);c.add(Calendar.DATE,-1);
System.out.println("3年后的日期:"+f.format(c.getTime()));
return threetime;
}
我这样做的目的是,因为前台我找不到方法来写,考虑到特殊情况2月份有28 29号
我直接在前台jquery里面去写算法计算,太麻烦了。我还不如直接丢给后台做处理,来获取这个返回值就可以了。java后封装好的相应工具类,这么好用,我也不需要我写那么多算法来计算时间戳,也不需要考虑各种年份了。
原理很简单一个文本框,一个触发事件,接收处理好的这个值就够了。
有更好,更简单的方法。请分享,互相学习