JavaScript验证和数据处理的干货(经典)
在开发web项目的时候,难免遇到各种对网页数据的处理,比如对用户在表单中输入的电话号码、邮箱、金额、身份证号、密码长度和复杂程度等等的验证,以及对后台返回数据的格式化比如金额,返回的值为null,还有对指定日期之前或之后某一天或某一月的计算。
遇到需要对数据及表单验证的,我相信大家都像我一样,喜欢在网上找相关的方法,因为自己写的话,是比较耗时的。今天就给大家分享一下,自己在工作中总结的一些常用
的js。
1 /** 2 * 验证密码复杂度(必须包含数字字母) 3 * @param str 4 * @returns true:满足规则,false:不满足 5 */ 6 function validateStr(str){ 7 var reg1 = /^(([0-9]{1,})([a-z]{1,}))|(([a-z]{1,})([0-9]{1,}))$/; 8 var reg2 = /^(([0-9]{1,})([A-Z]{1,}))|(([A-Z]{1,})([0-9]{1,}))$/; 9 //var reg3 = /^([a-zA-Z]{0,})[0-9a-z-A-z]{0,}[~`!@#$%^&*.]{0,}$/; 10 str = valueTrim(str); 11 //if(reg3.test(str)){ 12 // return true; 13 //} 14 if(reg1.test(str)){ 15 return true; 16 } 17 if(reg2.test(str)){ 18 return true; 19 } 20 return false; 21 } 22 /** 23 * 判断字符串长度 必须大于8位小于20位,一般用于密码 24 * @param str 字符串 25 * @returns 满足返回true 26 */ 27 function valiDateLength(str){ 28 if(str==null || str==''){ 29 return false; 30 } 31 str = valueTrim(str); 32 if(parseFloat(str.length)<8 ){ 33 return false; 34 } 35 if(parseFloat(str.length)>20){ 36 return false; 37 } 38 return true; 39 } 40 /** 41 * 验证时间 42 * @param dataValue 格式为:YYYY-MM-DD 43 * @returns 匹配返回true 不匹配返回false 44 */ 45 function valiDate(dateValue){ 46 var result = dateValue.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/); 47 if(result==null){ 48 return false; 49 } 50 return true; 51 } 52 /** 53 * 验证电话号码 54 * @param phoneValue 要验证的电话号码 55 * @returns 匹配返回true 不匹配返回false 56 */ 57 function validatePhone(phoneValue) { 58 phoneValue = valueTrim(phoneValue); 59 var reg = /^[1][0-9]{10}$/; 60 return reg.test(phoneValue); 61 } 62 /** 63 * 验证邮箱 64 * @param emailValue 要验证的邮箱 65 * @returns 匹配返回true 不匹配返回false 66 */ 67 function validateEmail(emailValue){ 68 var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; 69 return reg.test(emailValue); 70 } 71 /** 72 * 判断是否是数字 73 * @param numberValue 要验证的数据 74 * @returns 匹配返回true 不匹配返回false 75 */ 76 function isNumber(numberValue){ 77 //定义正则表达式部分 78 var reg1 = /^[0-9]{0,}$/; 79 var reg2 = /^[1-9]{1}[0-9]{0,}$/; 80 //alert(numberValue); 81 if(numberValue ==null || numberValue.length==0){ 82 return false; 83 } 84 numberValue = valueTrim(numberValue); 85 //判断当数字只有1位时 86 if(numberValue.length<2){ 87 return reg1.test(numberValue); 88 } 89 return reg2.test(numberValue);; 90 } 91 /*** 92 * 金额 93 * @param value 94 * @returns 95 */ 96 function isMoney(value) { 97 if(value==''){ 98 return false; 99 } 100 value = valueTrim(value); 101 value = value.replace(/(^\s*)|(\s*$)/g, ""); 102 var reg = /^[0-9]*\.?[0-9]{0,2}$/; 103 if(isNumber(value)){ 104 return true; 105 } 106 if(value.length>3){ 107 if(value.substr(0, 1)=="0"){ 108 if(value.substr(3,value.length).length>2){ 109 return false; 110 } 111 } 112 } 113 return reg.test(value); 114 } 115 /*** 116 * 判断是否是0到100之间的数 117 * @param value 118 * @returns 119 */ 120 function isZeroToOne(value) { 121 if(value==''){ 122 return false; 123 } 124 value = valueTrim(value); 125 if(isMyFloat(value)){ 126 if(parseFloat(value)<100 && parseFloat(value)>0){ 127 return true; 128 } 129 } 130 return false; 131 } 132 /** 133 * 验证是否是浮点数 134 * @param floatValue 要验证的数据 135 * @returns 匹配返回true 不匹配返回false 136 */ 137 function isMyFloat(floatValue){ 138 if(floatValue==''){ 139 return false; 140 } 141 floatValue = valueTrim(floatValue); 142 var reg = /^(\d+)(\.\d+)$/; 143 if(isNumber(floatValue)){ 144 return true; 145 } 146 if(floatValue.length>3){ 147 if(floatValue.substr(0, 1)=="0"){ 148 if(floatValue.substr(0, 2)!="0."){ 149 return false; 150 } 151 } 152 } 153 return reg.test(floatValue); 154 } 155 /** 156 * 判断是否是汉字 157 * @param charValue 要验证的数据 158 * @returns 匹配返回true 不匹配返回false 159 */ 160 function isCharacter(charValue){ 161 var reg = /^[\u4e00-\u9fa5]{0,}$/; 162 return reg.test(charValue); 163 } 164 /** 165 * 验证座机号 166 * @param telValue 要验证的座机号 167 * @returns 匹配返回true 不匹配返回false 168 */ 169 function valiDateTel(telValue){ 170 var reg = /^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/; 171 telValue = valueTrim(telValue); 172 if(!reg.test(telValue)){ 173 return false; 174 } 175 return true; 176 } 177 var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加权因子 178 var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]; // 身份证验证位值.10代表X 179 /** 180 * 验证身份证 181 * @param idCard 需要验证的身份证号 182 * @returns 匹配返回true 不匹配返回false 183 */ 184 function IdCardValidate(idCardValue) { 185 //去掉字符串头尾空格 186 idCardValue = valueTrim(idCardValue.replace(/ /g, "")); 187 if (idCardValue.length == 15) { 188 //进行15位身份证的验证 189 return isValidityBrithBy15IdCard(idCardValue); 190 } else if (idCardValue.length == 18) { 191 // 得到身份证数组 192 var a_idCard = idCardValue.split(""); 193 //进行18位身份证的基本验证和第18位的验证 194 if(isValidityBrithBy18IdCard(idCardValue)&&isTrueValidateCodeBy18IdCard(a_idCard)){ 195 return true; 196 }else { 197 return false; 198 } 199 } else { 200 return false; 201 } 202 } 203 /** 204 * 判断身份证号码为18位时最后的验证位是否正确 205 * @param a_idCard 身份证号码数组 206 * @return 207 */ 208 function isTrueValidateCodeBy18IdCard(a_idCard) { 209 var sum = 0; // 声明加权求和变量 210 if (a_idCard[17].toLowerCase() == 'x') { 211 a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作 212 } 213 for ( var i = 0; i < 17; i++) { 214 sum += Wi[i] * a_idCard[i];// 加权求和 215 } 216 valCodePosition = sum % 11; // 得到验证码所位置 217 if (a_idCard[17] == ValideCode[valCodePosition]) { 218 return true; 219 } else { 220 return false; 221 } 222 } 223 /** 224 * 验证18位数身份证号码中的生日是否是有效生日 225 * @param idCard 18位书身份证字符串 226 * @return 227 */ 228 function isValidityBrithBy18IdCard(idCard18){ 229 var year = idCard18.substring(6,10); 230 var month = idCard18.substring(10,12); 231 var day = idCard18.substring(12,14); 232 var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); 233 // 这里用getFullYear()获取年份,避免千年虫问题 234 if(temp_date.getFullYear()!=parseFloat(year) 235 ||temp_date.getMonth()!=parseFloat(month)-1 236 ||temp_date.getDate()!=parseFloat(day)){ 237 return false; 238 }else{ 239 return true; 240 } 241 } 242 /** 243 * 验证15位数身份证号码中的生日是否是有效生日 244 * @param idCard15 15位书身份证字符串 245 * @return 246 */ 247 function isValidityBrithBy15IdCard(idCard15){ 248 var year = idCard15.substring(6,8); 249 var month = idCard15.substring(8,10); 250 var day = idCard15.substring(10,12); 251 var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); 252 // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法 253 if(temp_date.getYear()!=parseFloat(year) 254 ||temp_date.getMonth()!=parseFloat(month)-1 255 ||temp_date.getDate()!=parseFloat(day)){ 256 return false; 257 }else{ 258 return true; 259 } 260 } 261 //去掉字符串头尾空格 262 function valueTrim(str) { 263 return str.replace(/(^\s*)|(\s*$)/g, ""); 264 } 265 /** 266 * 检验18位身份证号码(15位号码可以只检测生日是否正确即可,自行解决) 267 * @param idCardValue 18位身份证号 268 * @returns 匹配返回true 不匹配返回false 269 */ 270 function idCardVildate(cid){ 271 var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子 272 var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码 273 var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/; 274 if(reg.test(cid)){ 275 var sum = 0, idx; 276 for(var i = 0; i < cid.length - 1; i++){ 277 // 对前17位数字与权值乘积求和 278 sum += parseInt(cid.substr(i, 1), 10) * arrExp[i]; 279 } 280 // 计算模(固定算法) 281 idx = sum % 11; 282 // 检验第18为是否与校验码相等 283 return arrValid[idx] == cid.substr(17, 1).toUpperCase(); 284 }else{ 285 return false; 286 } 287 } 288 /** 289 * 获取指定日期之前或之后的第几天 290 * 291 * @param dayCount 292 * 正数为以后时间,负数为以前时间 如:1表示为明天,-1为昨天 293 * 294 */ 295 function getDateStr(dates, dayCount) { 296 var dateTime = dayCount * 24 * 60 * 60 * 1000; 297 var dd = new Date(); 298 if (dates == "") { 299 dd = new Date(); 300 } else { 301 dd = new Date(dates); 302 } 303 var dateNumber = dd.getTime() + dateTime; 304 var newDate = new Date(dateNumber); 305 var y = newDate.getFullYear(); 306 var m = newDate.getMonth() + 1;// 获取当前月份的日期 307 var d = newDate.getDate(); 308 if (m < 10) { 309 m = "0" + m; 310 } 311 if (d < 10) { 312 d = "0" + d; 313 } 314 return y + "-" + m + "-" + d; 315 } 316 /** 317 * 获取指定月份的之前或之后的第几个月 318 * 319 * @param dayCount 320 * 正数为以后月份,负数为以前月份 如:1表示为下月,-1为上月 321 * 322 */ 323 function getMonthStr(dates, monthCount) { 324 var dd = new Date(); 325 if (dates == "") { 326 dd = new Date(); 327 } else { 328 dd = new Date(dates); 329 } 330 var y = dd.getFullYear(); 331 var m = dd.getMonth() + 1;// 获取当前月份的日期 332 m = m + monthCount; 333 if (m == 0) { 334 m = "12"; 335 y = y - 1; 336 } else if (m < 10) { 337 m = "0" + m; 338 } else if (m > 12) { 339 m = m - 12; 340 m = "0" + m; 341 y = y + 1; 342 } 343 return y + "-" + m; 344 } 345 /** 346 * 347 *对val值为undefined返回“”,否则返回原值 348 */ 349 function dealNull(val) { 350 if (typeof (val) == "undefined") { 351 return ""; 352 } else { 353 return val; 354 } 355 }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 | /** * 验证密码复杂度(必须包含数字字母) * @param str * @returns true:满足规则,false:不满足 */ function validateStr(str){ var reg1 = /^(([0-9]{1,})([a-z]{1,}))|(([a-z]{1,})([0-9]{1,}))$/; var reg2 = /^(([0-9]{1,})([A-Z]{1,}))|(([A-Z]{1,})([0-9]{1,}))$/; //var reg3 = /^([a-zA-Z]{0,})[0-9a-z-A-z]{0,}[~`!@#$%^&*.]{0,}$/; str = valueTrim(str); //if(reg3.test(str)){ // return true; //} if (reg1.test(str)){ return true ; } if (reg2.test(str)){ return true ; } return false ; } /** * 判断字符串长度 必须大于8位小于20位,一般用于密码 * @param str 字符串 * @returns 满足返回true */ function valiDateLength(str){ if (str== null || str== '' ){ return false ; } str = valueTrim(str); if (parseFloat(str.length)<8 ){ return false ; } if (parseFloat(str.length)>20){ return false ; } return true ; } /** * 验证时间 * @param dataValue 格式为:YYYY-MM-DD * @returns 匹配返回true 不匹配返回false */ function valiDate(dateValue){ var result = dateValue.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/); if (result== null ){ return false ; } return true ; } /** * 验证电话号码 * @param phoneValue 要验证的电话号码 * @returns 匹配返回true 不匹配返回false */ function validatePhone(phoneValue) { phoneValue = valueTrim(phoneValue); var reg = /^[1][0-9]{10}$/; return reg.test(phoneValue); } /** * 验证邮箱 * @param emailValue 要验证的邮箱 * @returns 匹配返回true 不匹配返回false */ function validateEmail(emailValue){ var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; return reg.test(emailValue); } /** * 判断是否是数字 * @param numberValue 要验证的数据 * @returns 匹配返回true 不匹配返回false */ function isNumber(numberValue){ //定义正则表达式部分 var reg1 = /^[0-9]{0,}$/; var reg2 = /^[1-9]{1}[0-9]{0,}$/; //alert(numberValue); if (numberValue == null || numberValue.length==0){ return false ; } numberValue = valueTrim(numberValue); //判断当数字只有1位时 if (numberValue.length<2){ return reg1.test(numberValue); } return reg2.test(numberValue);; } /*** * 金额 * @param value * @returns */ function isMoney(value) { if (value== '' ){ return false ; } value = valueTrim(value); value = value.replace(/(^\s*)|(\s*$)/g, "" ); var reg = /^[0-9]*\.?[0-9]{0,2}$/; if (isNumber(value)){ return true ; } if (value.length>3){ if (value.substr(0, 1)== "0" ){ if (value.substr(3,value.length).length>2){ return false ; } } } return reg.test(value); } /*** * 判断是否是0到100之间的数 * @param value * @returns */ function isZeroToOne(value) { if (value== '' ){ return false ; } value = valueTrim(value); if (isMyFloat(value)){ if (parseFloat(value)<100 && parseFloat(value)>0){ return true ; } } return false ; } /** * 验证是否是浮点数 * @param floatValue 要验证的数据 * @returns 匹配返回true 不匹配返回false */ function isMyFloat(floatValue){ if (floatValue== '' ){ return false ; } floatValue = valueTrim(floatValue); var reg = /^(\d+)(\.\d+)$/; if (isNumber(floatValue)){ return true ; } if (floatValue.length>3){ if (floatValue.substr(0, 1)== "0" ){ if (floatValue.substr(0, 2)!= "0." ){ return false ; } } } return reg.test(floatValue); } /** * 判断是否是汉字 * @param charValue 要验证的数据 * @returns 匹配返回true 不匹配返回false */ function isCharacter(charValue){ var reg = /^[\u4e00-\u9fa5]{0,}$/; return reg.test(charValue); } /** * 验证座机号 * @param telValue 要验证的座机号 * @returns 匹配返回true 不匹配返回false */ function valiDateTel(telValue){ var reg = /^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/; telValue = valueTrim(telValue); if (!reg.test(telValue)){ return false ; } return true ; } var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加权因子 var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]; // 身份证验证位值.10代表X /** * 验证身份证 * @param idCard 需要验证的身份证号 * @returns 匹配返回true 不匹配返回false */ function IdCardValidate(idCardValue) { //去掉字符串头尾空格 idCardValue = valueTrim(idCardValue.replace(/ /g, "" )); if (idCardValue.length == 15) { //进行15位身份证的验证 return isValidityBrithBy15IdCard(idCardValue); } else if (idCardValue.length == 18) { // 得到身份证数组 var a_idCard = idCardValue.split( "" ); //进行18位身份证的基本验证和第18位的验证 if (isValidityBrithBy18IdCard(idCardValue)&&isTrueValidateCodeBy18IdCard(a_idCard)){ return true ; } else { return false ; } } else { return false ; } } /** * 判断身份证号码为18位时最后的验证位是否正确 * @param a_idCard 身份证号码数组 * @return */ function isTrueValidateCodeBy18IdCard(a_idCard) { var sum = 0; // 声明加权求和变量 if (a_idCard[17].toLowerCase() == 'x' ) { a_idCard[17] = 10; // 将最后位为x的验证码替换为10方便后续操作 } for ( var i = 0; i < 17; i++) { sum += Wi[i] * a_idCard[i]; // 加权求和 } valCodePosition = sum % 11; // 得到验证码所位置 if (a_idCard[17] == ValideCode[valCodePosition]) { return true ; } else { return false ; } } /** * 验证18位数身份证号码中的生日是否是有效生日 * @param idCard 18位书身份证字符串 * @return */ function isValidityBrithBy18IdCard(idCard18){ var year = idCard18.substring(6,10); var month = idCard18.substring(10,12); var day = idCard18.substring(12,14); var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); // 这里用getFullYear()获取年份,避免千年虫问题 if (temp_date.getFullYear()!=parseFloat(year) ||temp_date.getMonth()!=parseFloat(month)-1 ||temp_date.getDate()!=parseFloat(day)){ return false ; } else { return true ; } } /** * 验证15位数身份证号码中的生日是否是有效生日 * @param idCard15 15位书身份证字符串 * @return */ function isValidityBrithBy15IdCard(idCard15){ var year = idCard15.substring(6,8); var month = idCard15.substring(8,10); var day = idCard15.substring(10,12); var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法 if (temp_date.getYear()!=parseFloat(year) ||temp_date.getMonth()!=parseFloat(month)-1 ||temp_date.getDate()!=parseFloat(day)){ return false ; } else { return true ; } } //去掉字符串头尾空格 function valueTrim(str) { return str.replace(/(^\s*)|(\s*$)/g, "" ); } /** * 检验18位身份证号码(15位号码可以只检测生日是否正确即可,自行解决) * @param idCardValue 18位身份证号 * @returns 匹配返回true 不匹配返回false */ function idCardVildate(cid){ var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; //加权因子 var arrValid = [1, 0, "X" , 9, 8, 7, 6, 5, 4, 3, 2]; //校验码 var reg = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/; if (reg.test(cid)){ var sum = 0, idx; for ( var i = 0; i < cid.length - 1; i++){ // 对前17位数字与权值乘积求和 sum += parseInt(cid.substr(i, 1), 10) * arrExp[i]; } // 计算模(固定算法) idx = sum % 11; // 检验第18为是否与校验码相等 return arrValid[idx] == cid.substr(17, 1).toUpperCase(); } else { return false ; } } /** * 获取指定日期之前或之后的第几天 * * @param dayCount * 正数为以后时间,负数为以前时间 如:1表示为明天,-1为昨天 * */ function getDateStr(dates, dayCount) { var dateTime = dayCount * 24 * 60 * 60 * 1000; var dd = new Date(); if (dates == "" ) { dd = new Date(); } else { dd = new Date(dates); } var dateNumber = dd.getTime() + dateTime; var newDate = new Date(dateNumber); var y = newDate.getFullYear(); var m = newDate.getMonth() + 1; // 获取当前月份的日期 var d = newDate.getDate(); if (m < 10) { m = "0" + m; } if (d < 10) { d = "0" + d; } return y + "-" + m + "-" + d; } /** * 获取指定月份的之前或之后的第几个月 * * @param dayCount * 正数为以后月份,负数为以前月份 如:1表示为下月,-1为上月 * */ function getMonthStr(dates, monthCount) { var dd = new Date(); if (dates == "" ) { dd = new Date(); } else { dd = new Date(dates); } var y = dd.getFullYear(); var m = dd.getMonth() + 1; // 获取当前月份的日期 m = m + monthCount; if (m == 0) { m = "12" ; y = y - 1; } else if (m < 10) { m = "0" + m; } else if (m > 12) { m = m - 12; m = "0" + m; y = y + 1; } return y + "-" + m; } /** * *对val值为undefined返回“”,否则返回原值 */ function dealNull(val) { if ( typeof (val) == "undefined" ) { return "" ; } else { return val; } } |
分类:
细嗅java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?