日期的计算多少天 多少月 多少年后 前台通过了ajax调用后台处理获取返回值

时间:2023-02-19 21:31:33

需求是因为要做一个日期联动

通过日期控件的选择的日期值通过调用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);
}
});
}

日期的计算多少天 多少月 多少年后  前台通过了ajax调用后台处理获取返回值


后台

@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()));

String threetime=f.format(c.getTime());
return threetime;

}

我这样做的目的是,因为前台我找不到方法来写,考虑到特殊情况2月份有28 29号

我直接在前台jquery里面去写算法计算,太麻烦了。我还不如直接丢给后台做处理,来获取这个返回值就可以了。java后封装好的相应工具类,这么好用,我也不需要我写那么多算法来计算时间戳,也不需要考虑各种年份了。

原理很简单一个文本框,一个触发事件,接收处理好的这个值就够了。

        有更好,更简单的方法。请分享,互相学习