描述:
當開始日期和結束日期的範圍沒有超過一月,不需要切成一個月,超過一月時,對應的日期才隨動變成一個月前或一個月後
頁面:
<td width="10%" class="tdtit">開始日期:</td> <td width="15%" class="tdcont"> <input type="text" name="startdate" id="startdate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd', onpicked:function(){$dp.$('enddate').value =startpicker($dp.cal,$dp.$('enddate').value)}})" value="${startdate}" /> </td> <td width="10%" class="tdtit">結束日期:</td> <td width="15%" class="tdcont"> <input type="text" name="enddate" id="enddate" onClick="WdatePicker({dateFmt:'yyyy-MM-dd', onpicked:function(){$dp.$('startdate').value=endpicker($dp.cal,$dp.$('startdate').value)}})" value="${enddate}" /> </td>
js:
function startpicker(date,enddateStr) { var tempStrs = enddateStr.split("-"); var year = parseInt(tempStrs[0], 10); var month = parseInt(tempStrs[1], 10); var day = parseInt(tempStrs[2], 10); var enddate = new Date(year,month-1,day,0,0,0); var Y = date.getP('y'); var M = date.getP('M')-1; var D = date.getP('d'); var startdate = new Date(); startdate.setFullYear(Y, M, D); if ((enddate - startdate) / (1000 * 60 * 60 * 24) < 30 && (enddate - startdate) / (1000 * 60 * 60 * 24) >0) { if (enddate != null) { if (month>=1&&month<=9) { month = "0" + month; } if (day >= 1 && day <= 9) { day="0"+day } return year + "-" + month + "-" + day; } else { return null; } } else { M = parseInt(M, 10) + 1; D = parseInt(D, 10); startdate.setFullYear(Y, M, D); var startdateMonth = startdate.getMonth() + 1; var startdateDay = startdate.getDate(); if (startdateMonth >= 1 && startdateMonth <= 9) { startdateMonth = "0" + startdateMonth; } if (startdateDay >= 1 && startdateDay <= 9) { startdateDay = "0" + startdateDay; } return startdate.getFullYear() + "-" + startdateMonth + "-" + startdateDay; } } function endpicker(date,startdateStr) { var tempStrs = startdateStr.split("-"); var year = parseInt(tempStrs[0], 10); var month = parseInt(tempStrs[1], 10); var day = parseInt(tempStrs[2], 10); var startdate = new Date(year,month-1,day,0,0,0); var Y = date.getP('y'); var M = date.getP('M')-1; var D = date.getP('d'); var enddate = new Date(); enddate.setFullYear(Y, M, D); if ((enddate - startdate) / (1000 * 60 * 60 * 24) < 30 && (enddate - startdate) / (1000 * 60 * 60 * 24) >0) { if (enddate != null) { if (month>=1&&month<=9) { month = "0" + month; } if (day >= 1 && day <= 9) { day="0"+day } return year + "-" + month + "-" + day; } else { return null; } } else { M = parseInt(M, 10) - 1; D = parseInt(D, 10); enddate.setFullYear(Y, M, D); var enddateMonth = enddate.getMonth() + 1; var enddateDay = enddate.getDate(); if (enddateMonth >= 1 && enddateMonth <= 9) { enddateMonth = "0" + enddateMonth; } if (enddateDay >= 1 && enddateDay <= 9) { enddateDay = "0" + enddateDay; } return enddate.getFullYear() + "-" + enddateMonth + "-" +enddateDay; } }