关于JSP和JAVA中日期天数加减的求教!!关乎毕业!急求

宅share 2016-02-25 01:24:42

如上图,入住日期来自 oracl 数据库中固定数据,通过后台java action 传值,Jsp中S标签接收。
退房日期为插件选择,选择退房日期后,应收金额会自动显示“房价X天数”的价格。超出预付金额就减去预付金,则为实际价格。
现在请求各位帮忙看看, 这个 获取选择的日期,应该是在JSP中,还是到java中去操作。 到网上找了很多方法都不会用。
我的工程是 新手基础的 SSH 整合构建,所有的数据都是 Action 中的。 怎么获取这些日期的方法,如何相加减,并自动计算金额。小弟不胜感激!

...全文
429 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
110成成 2016-03-03
  • 打赏
  • 举报
回复
js中获取数据处理再填充到控件中。
May的博客 2016-03-03
  • 打赏
  • 举报
回复
或者有一个LZ可以考虑使用另外一个更简单的轻量级日期控件Pikaday,我简单写一下日期时间获取思路:
 
    var picker = new Pikaday(
    {
        field: document.getElementById('datepicker1'),
        firstDay: 1,
        minDate: new Date('2010-01-01'),
        maxDate: new Date('2020-12-31'),
        yearRange: [2000,2020]
    });
    var picker = new Pikaday(
    	    {
    	        field: document.getElementById('datepicker2'),
    	        firstDay: 1,
    	        minDate: new Date('2010-01-01'),
    	        maxDate: new Date('2020-12-31'),
    	        yearRange: [2000,2020]
    	    });
    function showActualPay(){
        var checkOutData = document.getElementById('datepicker1').value;
        var checkInData = document.getElementById('datepicker2').value;
        var checkOutArray = checkOutData.split("-");
        console.log('退房年份' + checkOutArray[0] );
        console.log('退房月份' + checkOutArray[1] );
        console.log('退房日期' + checkOutArray[2] );
        var checkInArray = checkInData.split("-");
        console.log('入住年份' + checkInArray[0] );
        console.log('入住月份' + checkInArray[1] );
        console.log('入住日期' + checkInArray[2] );
    }
</script>
May的博客 2016-03-03
  • 打赏
  • 举报
回复
function(){
	//获取退房日期(一种实现),使用日期插件的话一般都有专门的方法来获取相应的值
	  var checkOutDate = document.getElementById("checkOutDate");//退房日期
	  var checkInDate = document.getElementById("checkInDate");//入住日期
	  var prePay = document.getElementById("prePay");//预付金额
	  //计算入住天数
	 Calendar checkIn = Calendar.getInstance(Locale.CHINA); 
	 checkIn.setTime(checkInDate);//checkIn为Date类型
	 var checkInMouth = checkIn.get((Calendar.Month) + 1);
	 var checkInDay = checkIn.get(Calendar.DAY_OF_MOUTH);

	 Calendar checkOut = Calendar.getInstance(Locale.CHINA); 
	 checkOut.setTime(checkOutDate);//checkOutDate为Date类型
	 var checkOutMouth = checkIn.get((Calendar.Month) + 1);
	 var checkOutDay = checkIn.get(Calendar.DAY_OF_MOUTH);

	 if(checkInMouth == checkOutMouth){
		//入住日期和退房日期在同一个月
		var checkTime = checkOutDay - checkInDay;
	 }else{
	    //不在同一个月,先获取入住日期当月的总天数 + 退房日期当月入住的天数
		 var checkInMouthDay = checkInDate.getActualMaximum(Calendar.DATE);
		 var checkTime = checkMouthDay + checkOutDay;
	 }
	 var actualPay = 单价 * checkTime - 200;
}
LZ可以给退房日期绑定一个事件,退房日期选定之后触发上面的JS方法,计算实际应付的金额,然后赋值到应付金额文本框中。注意:以上方法我是按照JAVA后台代码来写的,LZ实际用到的话可以按照相关的JS代码用法进行相应修改。以下为本人的一篇有关日期时间计算的文章,希望对你有帮助。 http://blog.csdn.net/lmb55/article/details/50253825
xiaohuashenshou 2016-02-26
  • 打赏
  • 举报
回复
最好的用户体验是在客户端直接计算,当选择一个退房时间之后立马出示结果。

var dateStartMillons = new Date("2016/02-02").getTime();
var dateEndMillons = new Date("2016/02-20").getTime();
var differDays = (dateEndMillons - dateStartMillons) / (24 * 60 * 60 * 1000);
alert(differDays);
abc45628 2016-02-26
  • 打赏
  • 举报
回复
var 退房日期=new Date();
退房日期.setFullYear(2016,2,26);//带时区的,中国时区是UTC+8
var 入住日期=new Date();
入住日期.setFullYear(2016,2,2);
var days=(退房日期-入住日期)/(24*60*60)+1;
var money=days*房价; 
var real_money; 
if(money>=预付金){
  real_money=money-预付金;
}else{
  real_money=预付金-money;
}
基本思路就这样
fupingjie 2016-02-26
  • 打赏
  • 举报
回复
在退房日期的input中加上onchange=sumMoney(this,#date#,#money#) 在script中加上 function sumMoney(item,strDateEnd,money){ var strDateStart=item.value; var strSeparator = "-"; //日期分隔符 var oDate1; var oDate2; var iDays; var sumMoney; oDate1= strDateStart.split(strSeparator); oDate2= strDateEnd.split(strSeparator); var strDateS = new Date(oDate1[0], oDate1[1]-1, oDate1[2]); var strDateE = new Date(oDate2[0], oDate2[1]-1, oDate2[2]); iDays = parseInt(Math.abs(strDateS - strDateE ) / 1000 / 60 / 60 /24)//把相差的毫秒数转换为天数 sumMoney=iDays *money; $("#sum").val(sumMoney); }
晓柒哥哥 2016-02-26
  • 打赏
  • 举报
回复
from表单提交啊 然后request 通过ID 获取啊
青蛙Keroro 2016-02-25
  • 打赏
  • 举报
回复
js取一下退房日期text框的value,处理一下入住和退房的时间,然后算出住宿多少天*金额,然后赋值给应收金额的text框,这个意思吗?
youyoulongtaizi 2016-02-25
  • 打赏
  • 举报
回复
建议后台处理日期,找一找开源日期处理,加减都很简单,不用自己具体去实现
Stluny 2016-02-25
  • 打赏
  • 举报
回复
引用 7 楼 Stluny 的回复:
[quote=引用 5 楼 w292614191 的回复:] [quote=引用 1 楼 Stluny 的回复:] 你这个不是有个textfield么 可以获取到textfield中的内容 就是那个日期啊 让后放到entity中 传出去到action中处理就好了啊
获取jsp 的数据,然后传到实体类中,到后台处理吗? 貌似没接触过这样的做法。 有例子吗?? 谢谢[/quote] 我说的实体类是在后台组织的 获取jsp 的数据表单提交的时候不是就拿到了么 难道这个textfield 不在表单中么? 如果在表单里 不是可以根据ID直接在action中拿到text的内容吗? 得到了内容 你不得在action中组织成个entity么 有了这些信息你不是想干嘛干嘛吗。。 [/quote] 等等等等。。。 看错需求了。。 你是要在本页面算出 要交多少房租吧 这样 你可以用js完成啊 先获得入住时间的那个textfield (getElementById这个应该会吧?) 拿到里面的日期 获得年月日 在拿到退房日期那个textfield中的年月日。 然后判断各种情况 一减(中间应该还有什么2月多少天 平闰年什么的一大堆判断 应该还挺复杂的) 拿到入住天数 在根据每日房价 算出金额 在getelementById拿到金额textfield 放进去 最好可以用ajax局部刷新 不行就你全刷新 然后你的需求就满足了
Stluny 2016-02-25
  • 打赏
  • 举报
回复
引用 5 楼 w292614191 的回复:
[quote=引用 1 楼 Stluny 的回复:] 你这个不是有个textfield么 可以获取到textfield中的内容 就是那个日期啊 让后放到entity中 传出去到action中处理就好了啊
获取jsp 的数据,然后传到实体类中,到后台处理吗? 貌似没接触过这样的做法。 有例子吗?? 谢谢[/quote] 我说的实体类是在后台组织的 获取jsp 的数据表单提交的时候不是就拿到了么 难道这个textfield 不在表单中么? 如果在表单里 不是可以根据ID直接在action中拿到text的内容吗? 得到了内容 你不得在action中组织成个entity么 有了这些信息你不是想干嘛干嘛吗。。
XiaoLeng_S430 2016-02-25
  • 打赏
  • 举报
回复
直接JSP调用你的ACTION,参数跟在后面不就好了
宅share 2016-02-25
  • 打赏
  • 举报
回复
引用 1 楼 Stluny 的回复:
你这个不是有个textfield么 可以获取到textfield中的内容 就是那个日期啊 让后放到entity中 传出去到action中处理就好了啊
获取jsp 的数据,然后传到实体类中,到后台处理吗? 貌似没接触过这样的做法。 有例子吗?? 谢谢
宅share 2016-02-25
  • 打赏
  • 举报
回复
引用 2 楼 JDMSE 的回复:
好人,你做的也是酒店客房管理系统吗
对啊。 你也是嘛??
风马博客 2016-02-25
  • 打赏
  • 举报
回复
这个直接取text里的值,转换成日期格式,用js取今天和用户选择的时间差,乘以房价。返回给页面。。。。 不难的。加油
JDMSE 2016-02-25
  • 打赏
  • 举报
回复
好人,你做的也是酒店客房管理系统吗
Stluny 2016-02-25
  • 打赏
  • 举报
回复
你这个不是有个textfield么 可以获取到textfield中的内容 就是那个日期啊 让后放到entity中 传出去到action中处理就好了啊

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧