获取指定日期的前一天日期

看博客的时候,看到一篇文章,是获取指定日期的前一天日期,所以自己也写了一个方法,如下:

 

  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 }
View Code

 

posted @ 2013-08-24 11:55  毛毛大王  阅读(624)  评论(0编辑  收藏  举报