获取指定日期的前一天日期
看博客的时候,看到一篇文章,是获取指定日期的前一天日期,所以自己也写了一个方法,如下:
1 /* 2 * 功 能:根据年月得到指定月份的天数 3 * 参 数:nYear 年 4 * nMonth 月 5 * 返 回 值:最大天数 6 * 创 建 人:maojw 7 * 创建时间:2013-08-23 8 */ 9 function getDaysOfMonth(nYear, nMonth) { 10 if (nYear == undefined || nYear == "" || nMonth == undefined || nMonth == "") { 11 return 0; 12 } 13 var nDayCount; 14 15 switch (nMonth) { 16 case 1: 17 case 3: 18 case 5: 19 case 7: 20 case 8: 21 case 10: 22 case 12: 23 nDayCount = 31; 24 break; 25 case 4: 26 case 6: 27 case 9: 28 case 11: 29 nDayCount = 30; 30 break; 31 case 2: 32 if (((nYear % 4 == 0) && !(nYear % 100 == 0)) 33 || (nYear % 400 == 0)) 34 nDayCount = 29; 35 else 36 nDayCount = 28; 37 break; 38 } 39 40 return nDayCount; 41 } 42 43 /* 44 * 功 能:判断输入的字符串是否为正确的日期格式 45 * 参 数:sDate-日期 46 * 返 回 值:true - 正确,否则 false 47 * 创 建 人:maojw 48 * 创建时间:2013-08-23 49 */ 50 function isDateLegal(sDate) { 51 52 if (sDate == undefined || sDate == "") { 53 return false; 54 } 55 56 var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; 57 var r = sDate.match(reg); 58 if (r == null) { 59 return false; 60 } 61 62 var aDate = sDate.split("-"); 63 64 var nYear, nMonth, nDay; 65 nYear = parseInt(aDate[0]); 66 nMonth = parseInt(aDate[1]); 67 nDay = parseInt(aDate[2]); 68 69 if (nYear < 1900 || nYear > 2099) { 70 return false; 71 } 72 if (nMonth < 1 || nMonth > 12) { 73 return false; 74 } 75 76 var nDaysOfMonth = getDaysOfMonth(nYear, nMonth); 77 if (nDay < 1 || nDay > nDaysOfMonth) { 78 return false; 79 } 80 81 return true; 82 } 83 84 /* 85 * 功 能:获取指定日期的前一天日期 86 * 参 数: 87 * 返 回 值: 88 * 创 建 人:毛军伟 89 * 创建时间:2013-08-23 90 */ 91 function getYestoday(sDate, sErrorMessage) { 92 93 if (sErrorMessage == undefined || sErrorMessage == "") { 94 sErrorMessage = ""; 95 } 96 97 if (sDate == undefined || sDate == "") { 98 return sErrorMessage; 99 } 100 101 if (!isDateLegal(sDate)) { 102 return sErrorMessage; 103 } 104 105 var aDate = sDate.split("-"); 106 107 var nYear, nMonth, nDay; 108 nYear = parseInt(aDate[0]); 109 nMonth = parseInt(aDate[1]); 110 nDay = parseInt(aDate[2]); 111 112 //初始化月份(第一个0,占位作用,让下标和月份对应) 113 var aMonth = new Array([0], [31], [28], [31], [30], [31], [30], [31], [31], [30], [31], [30], [31]); 114 115 ///判断是否是闰年 116 if (nYear % 4 == 0 && nYear % 100 != 0) { 117 aMonth[2] = 29; 118 } 119 ///判断日期是否是第一天 120 if (nDay - 1 == 0) { 121 ///判断月份是否是一月 122 if (nMonth - 1 == 0) { 123 nYear -= 1; 124 nMonth = 12; 125 } else { 126 nMonth -= 1; 127 } 128 nDay = aMonth[nMonth]; 129 } else { 130 nDay -= 1; 131 } 132 133 ///月份小于10,前面加0 134 if (nMonth < 10) { 135 nMonth = "0" + nMonth; 136 } 137 ///日期小于10,前面加0 138 if (nDay < 10) { 139 nDay = "0" + nDay; 140 } 141 142 return nYear + "-" + nMonth + "-" + nDay; 143 }