简单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中文网其他相关文章!