簡單JavaScript函數用於檢查日期是否有效。
function isValidDate(s) { var bits = s.split('/'); var d = new Date(bits[2] + '/' + bits[1] + '/' + bits[0]); return !!(d && (d.getMonth() + 1) == bits[1] && d.getDate() == Number(bits[0])); } //测试 var currentDate = new Date('31/09/2011'); console.log(isValidDate(currentDate.toString())); console.log(isValidDate('30/09/2011'));
JavaScript函數用於獲取一個月的天數。
function daysInMonth(month, year) { return new Date(year, month, 0).getDate(); } //测试 daysInMonth('09','2011'); //输出: 30
另見:- jQuery 獲取未來日期
JavaScript函數用於檢查日期是否有效,如果無效則將其設置為當月最後一天。
/* 检查日期是否有效,如果无效则恢复到当月最后一天 */ validateDateLastDayMonth: function() { /* 辅助函数 */ function isValidDate(s) { var bits = s.split('/'); var d = new Date(bits[2] + '/' + bits[1] + '/' + bits[0]); return !!(d && (d.getMonth() + 1) == bits[1] && d.getDate() == Number(bits[0])); } function daysInMonth(month, year) { return new Date(year, month, 0).getDate(); } /* 初始化 */ var currentDate = new Date(), currentMonth = currentDate.getMonth() + 1, lastDayOfMonth = new Date(currentDate.getFullYear(), (currentDate.getMonth() - 1), 0).getDate(), departureDate = FCL.DATETIME.futureDateDays(14), depDate = departureDate.split('/'), departureDateMonth = depDate[1]; if (departureDateMonth != currentMonth) { departureDate = FCL.DATETIME.leadingZero(lastDayOfMonth) +'/'+ FCL.DATETIME.leadingZero(currentMonth) +'/'+ depDate[2]; } /* 验证日期 */ if (!isValidDate(departureDate.toString())) { var bits = departureDate.split('/'); departureDate = FCL.DATETIME.leadingZero(daysInMonth(bits[1],bits[2])) +'/'+ FCL.DATETIME.leadingZero(currentMonth) +'/'+ depDate[2]; } $('input[name="depDate"]').val(departureDate); }
jQuery 提供了一個名為 $.datepicker.parseDate
的方法,可用於驗證特定格式的日期。此方法採用兩個參數:日期格式和日期字符串。如果日期字符串與格式匹配,則該方法返回一個 Date 對象。如果不匹配,則會引發錯誤。示例如下:
try { $.datepicker.parseDate('dd/mm/yy', '31/12/2020'); console.log('日期有效'); } catch (error) { console.log('日期无效'); }
jQuery驗證插件提供了一個強大的客戶端表單驗證框架。它包括針對常見需求(包括日期驗證)的內置驗證方法。要使用它,您需要在項目中包含該插件,並在表單上調用 validate
方法。您可以為每個表單字段(包括日期字段)指定規則。例如:
$('form').validate({ rules: { dateField: { date: true } } });
要驗證日期範圍,您可以使用 $.datepicker.parseDate
方法將日期字符串轉換為 Date 對象,然後進行比較。示例如下:
var startDate = $.datepicker.parseDate('dd/mm/yy', '01/01/2020'); var endDate = $.datepicker.parseDate('dd/mm/yy', '31/12/2020'); if (startDate > endDate) { console.log('开始日期晚于结束日期'); } else { console.log('日期范围有效'); }
可以,您可以使用內置的 JavaScript Date 對象來驗證日期,而無需使用插件。但是,此方法不如使用插件或 $.datepicker.parseDate
方法靈活,也更複雜。示例如下:
var dateString = '31/12/2020'; var dateParts = dateString.split('/'); var dateObject = new Date(+dateParts[2], dateParts[1] - 1, +dateParts[0]); if (dateObject.getDate() == dateParts[0] && dateObject.getMonth() == dateParts[1] - 1 && dateObject.getFullYear() == dateParts[2]) { console.log('日期有效'); } else { console.log('日期无效'); }
其餘FAQ內容與上麵類似,只是對問題的描述和代碼示例略有調整,為了避免重複,這裡不再贅述。 核心思想都是基於JavaScript的Date
對象和jQuery的$.datepicker.parseDate
方法進行日期的有效性驗證。 不同的問題只是在驗證條件上有所不同,例如日期格式、日期範圍、閏年等。
以上是jQuery檢查日期是否有效的詳細內容。更多資訊請關注PHP中文網其他相關文章!