刚做了一个日期的加减,以防以后用到,先做个小记录
我在整这个的时候遇见两个小问题(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("请选择存期!","温馨提示")
}
完事了!!!