使用日期控件实现日期加减

本文介绍了一种使用JavaScript进行日期加减运算的方法,并详细解释了如何处理不同单位(如年、月、天)的日期计算。此外,还解决了NaN判断问题,提供了一种更精确的NaN检测函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚做了一个日期的加减,以防以后用到,先做个小记录

我在整这个的时候遇见两个小问题(1.我把获取天的Date和获取周的Day搞混了,2.在判断的时候遇见NaN)

        1.false、null、0、”“、undefined都很好判断,直接使用===即可 
但是NaN是不能使用===的

> NaN === NaN;
false  //永远返回false

      2.JS中有一个全局函数isNaN(),但这个函数有一个问题,它总会隐式的将参数中的值转换成数字再做判断,这样就在判断很多明显不是NaN的值的时候也返回了true:

> isNaN("foo") 
true 

解决方法:

     

function myIsNaN(value) { 
    return value !== value; 
} 
//在使用isNaN()之前先检查一下这个值是不是数字类型,这样就避免了隐式转换的问题:

function myIsNaN2(value) { 
    return typeof value === 'number' && isNaN(value); 
} 

-------------------------------先来看一下这个计算的界面   还是用语言描述一下把:存期+起息日()=到期日

 

所设计到的(日期控件,失去焦点事件)不多说了,直接插代码、

//起息日焦点触发
        function startonfours(){
        	var endDate=$dp.$('endDate');
        	console.log(123)
        	//1.获取存期文本框的值,进行字符串分割判断存期
        	var bankSaveYear= $("#bankSaveYear").find("option:selected").text();
        	var bankSaveYearval= $("#bankSaveYear").find("option:selected").val();
        	console.log(bankSaveYearval)
        	if(bankSaveYearval !=""){
        			//获取起息日的时间
	        	var qixiri =$("#startDate").val();
	        			//判断是否有值
	        	if(bankSaveYear!= null && qixiri !=null){
	        		//现在得出两个值---------------------------
	        		var saveYearnum = bankSaveYear.replace(/[^0-9]/ig,"");
	        		var saveYearchar = bankSaveYear.match(/[\u4e00-\u9fa5]/g).join("");
	        		//分别获取年,月,日
	        		var curtDate  = new Date(qixiri);
	        		var curtYear  = parseInt(curtDate.getFullYear());
	        		var curtMonth = parseInt(curtDate.getMonth()+1);
	        		var curtTian  = parseInt(curtDate.getDate());
	        		//最新日期
	        		var now="";
	        		console.log(curtYear)
	        		console.log(curtMonth)
	        		var numTian = (curtTian) -1;
	        		//到息日年和月-1天
	        		if(curtMonth ===curtMonth && !isNaN(curtMonth)){
	        			if(saveYearchar =='个月' && saveYearchar!=null){
							//月:1.当前月份+到12月后				年+1
							//现在月份+期限(月份)
							var numyue = (curtMonth)+parseInt(saveYearnum);
							console.log(numyue +"--------"+curtMonth+"---------"+saveYearnum)
							while(numyue>12){
								curtYear++;
								numyue -=12;
							}
							//准确计算出日期
							now = curtYear+"-"+numyue+"-"+numTian;
							console.log(now);
							$("#endDate").val(now);
						}
						//判断年
						if(saveYearchar =='年' && saveYearchar!=null){
							//现在年份+期限(年份)
							var numYear = (curtYear)+parseInt(saveYearnum);
							console.log(numyue +"--------"+curtMonth+"---------"+saveYearnum)
							//准确计算出日期
							
							now = numYear+"-"+curtMonth+"-"+numTian;
							console.log(now);
							$("#endDate").val(now);
						}
						
						//判断天
						if(saveYearchar =='天' && saveYearchar!=null){
							//天:1.当前天份+到1,3,5,7,8,10,12每月为31天,4,6,9,11为30天,二月:29天,
							//月底+,则月+1,12月29+1,则年+1
							//现在天数+期限(天)	-月份+1	-年份+1
							var numDate = (curtTian)+parseInt(saveYearnum);
							console.log(numDate+"=====================================")
							if(curtMonth ==1 || curtMonth ==3 || curtMonth ==5 || curtMonth ==7 || curtMonth ==8 || curtMonth ==10 || curtMonth ==12){
								while(numDate>31){
									curtMonth++;
									numDate-=31
									while(curtMonth>12){
										curtYear++;
										curtMonth-=12;								
									}
								}
							}
							//准确计算出日期  numDate-1:到息日-1天
							var daoxiri =(numDate -1);
							now = curtYear+"-"+curtMonth+"-"+daoxiri;
							console.log(now);
							$("#endDate").val(now);
						}
	        		}
	        	}
        	}else{
        		showAlert("请选择存期!","温馨提示")
        	}

 

完事了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值