var testFlag = true; if (testFlag) { if (null != getPreYearMonth("afaw")) { alert("其他字符没有过滤"); } if (null != getPreYearMonth("20131311")) { alert("太长的长度没有过滤"); } if (null != getPreYearMonth("201313")) { alert("不合格的月份没有过滤"); } if ("201006" != getPreYearMonth("201007")) { alert("取值不正确,应为201006, 却为" + getPreYearMonth("201007") ); } if ("200912" != getPreYearMonth("201001")) { alert("取值不正确,应为200912, 却为" + getPreYearMonth("201001") ); } } /** * 通过传入年月(字符串,如‘201007’)得到前一个月的年月,格式与参数相同 * @param yearMonth * @return preYearMonth */ function getPreYearMonth(yearMonth){ //校验年月参数是否合格 var isValidate = true; if (yearMonth) { if (parseInt(yearMonth) != yearMonth) { isValidate = false; } var len = yearMonth.length; if (len < 5 || len > 6) { isValidate = false; } } else { isValidate = false; } //得到上一个月的年月 if (isValidate) { //解析得到年月 var year = yearMonth.substring(0,4); var month = yearMonth.substring(4,6); //判断传入参数的月份是否正确,在1和12之间 if (month > 12 || month < 1) { return null; } //得到上一个月的年月 var newMonth = 1; //如果上一个月没有跨年 if (month > 1) { newMonth = month - 1; } else { //跨年的话,年要减1,月份变为12 newMonth = 12; year -= 1; } //转换为字符串。如果小于10得加个0; if (newMonth < 10) { newMonth = '0' + newMonth; } else { newMonth += ''; } return year += newMonth; } else { return null; } } 自已写的js函数,用来通过传入年月(字符串,如‘201007’)得到前一个月的年月,格式与参数相同